DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Uncategorized»Comment utiliser les rôles Ansible
    Uncategorized

    Comment utiliser les rôles Ansible

    mars 8, 2023
    Comment utiliser les rôles Ansible
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    Dans cet article, vous apprendrez les bases des rôles Ansible. Avec les rôles Ansible, vous pouvez réutiliser le contenu Ansible que vous créez et le partager avec d’autres utilisateurs. Vous apprendrez étape par étape les rôles Ansible au moyen d’exemples. Apprécier!

    Introduction

    Dans les trois articles Ansible précédents, vous avez appris à configurer un environnement de test Ansible, à créer un inventaire Ansible et à créer un playbook Ansible.

    Pour rappel, voici les trois articles :

    1. Comment configurer un environnement de test Ansible
    2. Comment créer un inventaire Ansible
    3. Comment créer un playbook Ansible

    Cet article continue cette série, mais il n’est pas nécessaire de lire les trois premiers articles. Dans cet article, vous apprendrez à utiliser les rôles Ansible. Les rôles Ansible vous permettront de structurer votre contenu Ansible de manière à ce qu’il puisse être facilement réutilisé. De cette façon, vous pouvez partager votre contenu Ansible avec d’autres utilisateurs. En plus de cet article, il est conseillé de lire la section des rôles de la documentation officielle d’Ansible.

    Au cas où vous n’auriez pas lu les articles précédents, ou juste pour rappel, l’environnement se compose d’un « Controller » et de deux « Target machines ». Le « contrôleur » et les « machines cibles » s’exécutent dans une machine virtuelle VirtualBox. Le développement des scripts Ansible se fait avec IntelliJ sur la machine hôte. Les fichiers sont synchronisés de la machine hôte vers le « Controller » au moyen d’un script. Dans cet article, les machines ont les adresses IP suivantes :

    • Manette: 192.168.2.11
    • Cible 1: 192.168.2.12
    • Cible 2: 192.168.2.13

    Les fichiers utilisés dans cet article sont disponibles dans le référentiel git correspondant sur GitHub.

    Conditions préalables

    Les conditions préalables suivantes s’appliquent à cet article :

    • Vous avez besoin d’un environnement de test Ansible, voir Comment configurer un environnement de test Ansible.
    • Vous devez avoir des connaissances de base sur Ansible (lisez les articles précédents de cette série si vous ne possédez pas ces connaissances).
    • Si vous utilisez votre propre environnement, sachez qu’Ubuntu 22.04 LTS est utilisé pour les « Controller » et « Target machines » et Ansible version 2.13.3.
    • Connaissances de base de Linux.

    Point de départ

    Le point de départ sera un playbook, qui a été créé dans un article précédent. Le playbook installe le serveur Web Apache sur les deux machines cibles et modifie la page d’index avec un message de bienvenue :

    - name: Install Apache webserver for target 1
      hosts: target1
      become: yes
     
      tasks:
        - name: Install apache httpd  (state=present is optional)
          ansible.builtin.apt:
            name: apache2
            update_cache: yes
            state: present
     
        - name: Create index page for target 1
          ansible.builtin.copy:
            content: 'Hello world from target 1'
            dest: /var/www/html/index.html
     
    - name: Install Apache webserver for target2
      hosts: target2
      become: yes
     
      tasks:
        - name: Install apache httpd  (state=present is optional)
          ansible.builtin.apt:
            name: apache2
            update_cache: yes
            state: present
     
        - name: Create index page for target 2
          ansible.builtin.copy:
            content: 'Hello world from target 2'
            dest: /var/www/html/index.html

    Comme vous pouvez le voir, ce playbook contient pas mal de doublons. C’est quelque chose qui peut être résolu en utilisant des rôles.

    Rôle avec message fixe

    Dans cette section, vous allez restructurer le playbook pour utiliser les rôles.

    Créez, à la racine du dépôt, un roles annuaire. A l’intérieur de ce roles répertoire, vous créez un autre répertoire avec le nom du rôle. Dans ce cas, vous le nommerez webserverfixed. À l’intérieur de webserverfixed répertoire, vous créez un tasks annuaire. La structure du répertoire est la suivante :

    roles
    └── webserverfixed
        └── tasks

    À l’intérieur de tasks répertoire, vous créez un main.yml fichier contenant les tâches telles qu’elles sont utilisées dans le playbook. La seule différence est que le message d’accueil contient un message fixe au lieu d’un message spécifique pour chaque cible. Vous corrigerez cela dans la section suivante :

    - name: Install apache httpd  (state=present is optional)
      ansible.builtin.apt:
        name: apache2
        update_cache: yes
        state: present
     
    - name: Create index page for target
      ansible.builtin.copy:
        content: 'Hello world from target'
        dest: /var/www/html/index.html

    L’étape suivante consiste à créer un playbook playbook-roles-fixed-hello-message.yml et utilisez le rôle :

    - name: Install Apache webserver for all targets
      hosts: targets
      become: yes
      roles:
        - webserverfixed

    Démarrez votre environnement VM (si ce n’est déjà fait), transférez le référentiel vers le contrôleur à l’aide du transferdata.sh script et exécutez le playbook à partir du contrôleur. Le mot de passe « DEVENIR » est « osboxes.org » et le mot de passe  » Vault  » est « il fait beau: »

    $ ansible-playbook playbook-roles-fixed-hello-message.yml -i inventory/inventory.ini --ask-vault-pass --ask-become-pass
    BECOME password: 
    Vault password: 
     
    PLAY [Install Apache webserver for all targets] **************************************************************************************
     
    TASK [Gathering Facts] ***************************************************************************************************************
    ok: [target2]
    ok: [target1]
     
    TASK [webserverfixed : Install apache httpd  (state=present is optional)] ************************************************************
    ok: [target2]
    ok: [target1]
     
    TASK [webserverfixed : Create index page for target] *********************************************************************************
    changed: [target2]
    changed: [target1]
     
    PLAY RECAP ***************************************************************************************************************************
    target1                    : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    target2                    : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

    Comme vous pouvez le voir dans la sortie ci-dessus, les pages d’index sont modifiées. Vérifiez sur votre machine hôte si les messages de bienvenue sont corrects :

    $ curl http://192.168.2.12
    Hello world from target
    $ curl http://192.168.2.13
    Hello world from target

    Les deux machines cibles renvoient le même message de bienvenue, comme prévu.

    Rôle à message variable

    Le playbook ci-dessus fonctionne bien, mais ce n’était pas exactement ce qui était défini dans le playbook original. Le playbook original contenait un message de bienvenue spécifique à chaque cible. Alors, ajoutons cette fonctionnalité. Tout d’abord, copiez le webserverfixed répertoire et collez-le comme webservervariable. Cela vous donne la structure de répertoire suivante :

    roles
    ├── webserverfixed
    │   └── tasks
    │       └── main.yml
    └── webservervariable
          └── tasks
              └── main.yml

    Vous aurez besoin d’une variable pour créer un message spécifique pour chaque cible. Créer un répertoire defaults dans le répertoire webservervariable et ajouter un main.yml fichier avec le contenu suivant :

    Changer tasks/main.yml le message de bienvenue pour qu’il utilise la variable. Modifiez la partie suivante :

    - name: Create index page for target
      ansible.builtin.copy:
        content: 'Hello world from target'
        dest: /var/www/html/index.html

    dans:

    - name: Create index page for target
      ansible.builtin.copy:
        content: 'Hello world from {{ hello_message }}'
        dest: /var/www/html/index.html

    Créer un livre de jeu playbook-roles-variable-hello-message-default.yml avec le même contenu que le playbook de la section précédente. La seule chose qui change est le nom du rôle. Changez-le en webservervariable:

    - name: Install Apache webserver for all targets
      hosts: targets
      become: yes
      roles:
        - webservervariable

    Ensuite, exécutez le playbook.

    Avis: dans la sortie que rien n’a changé pour la page d’index :

    $ ansible-playbook playbook-roles-variable-hello-message-default.yml -i inventory/inventory.ini --ask-vault-pass --ask-become-pass
    BECOME password: 
    Vault password: 
     
    PLAY [Install Apache webserver for all targets] **************************************************************************************************************
     
    TASK [Gathering Facts] ***************************************************************************************************************************************
    ok: [target2]
    ok: [target1]
     
    TASK [webservervariable : Install apache httpd  (state=present is optional)] *********************************************************************************
    ok: [target2]
    ok: [target1]
     
    TASK [webservervariable : Create index page for target] ******************************************************************************************************
    ok: [target2]
    ok: [target1]
     
    PLAY RECAP ***************************************************************************************************************************************************
    target1                    : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   
    target2                    : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

    Lorsque vous vérifiez le contenu au moyen de curl, vous ne verrez aucune différence avec la section précédente. C’est comme prévu, vous avez seulement changé le rôle pour qu’il utilise une variable, mais la variable prend par défaut la valeur cible.

    Créer un livre de jeu playbook-roles-variable-hello-message.yml et réglez le hello_message variable à respectivement target1 et target2 dépend de l’hébergeur :

    - name: Install Apache webserver for target1
      hosts: target1
      become: yes
      roles:
        - role: webservervariable
          vars:
            hello_message: 'target1'
     
    - name: Install Apache webserver for target2
      hosts: target2
      become: yes
      roles:
        - role: webservervariable
          vars:
            hello_message: 'target2'

    Exécutez le livre de jeu. Comme…

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.