Aller au contenu principal

Les meilleurs patterns Ansible

· 2 minutes de lecture
Stéphane ROBERT
Consultant DevOps

Quels sont les patterns Ansible qui pourraient vous faciliter la vie. C'est le sujet de ce billet.

En cours d'écriture....

Meilleurs patterns

Utilisez la syntaxe des blocs pour regrouper les tâches. Les tâches qui se rapportent les unes aux autres et partagent des attributs ou des balises communes peuvent être regroupées à l'aide de bloquer option. Un autre avantage de cette option est des retours en arrière plus faciles pour les tâches sous le même bloc.

- name: Install, configure, and start an Nginx web server
  block:
    - name: Update and upgrade apt
      ansible.builtin.apt:
        update_cache: yes
        cache_valid_time: 3600
        upgrade: yes

    - name: "Install Nginx"
      ansible.builtin.apt:
        name: nginx
        state: present

    - name: Copy the Nginx configuration file to the host
      template:
        src: templates/nginx.conf.j2
        dest: /etc/nginx/sites-available/default

    - name: Create link to the new config to enable it
      file:
        dest: /etc/nginx/sites-enabled/default
        src: /etc/nginx/sites-available/default
        state: link

    - name: Create Nginx directory
      ansible.builtin.file:
        path: /home/ubuntu/nginx
        state: directory

    - name: Copy index.html to the Nginx directory
      copy:
        src: files/index.html
        dest: /home/ubuntu/nginx/index.html
      notify: Restart the Nginx service
  when: ansible_facts['distribution'] == 'Ubuntu'
  tags: nginx
  become: true
  become_user: root

Utilisez des handlers pour les tâches à déclencher :

Les handlers permettent d'exécuter une tâche après que quelque chose a changé. Ce gestionnaire sera déclenché en cas de modification du fichier index.html de l'exemple ci-dessus.

handlers:
  - name: Restart the Nginx service
    service:
      name: nginx
      state: restarted
    become: true
    become_user: root