GNU/Linux >> Tutoriels Linux >  >> Linux

RHCE Ansible Series #5 :Ansible Loops

Vous voudrez peut-être parfois répéter une tâche plusieurs fois. Par exemple, vous pouvez créer plusieurs utilisateurs, démarrer/arrêter plusieurs services ou modifier la propriété de plusieurs fichiers sur vos hôtes gérés.

Dans ce didacticiel, vous apprendrez à utiliser les boucles Ansible pour répéter une tâche plusieurs fois sans avoir à réécrire toute la tâche encore et encore.

Avant de regarder les boucles dans Ansible, j'espère que vous avez suivi d'autres chapitres de cette série de tutoriels Ansible. Vous devez connaître le concept des playbooks Ansible, connaître les commandes ad hoc et connaître la terminologie de base associée à Ansible comme la liste, les dictionnaires, etc.

Connaître les bases de YAML est également apprécié.

Boucle sur des listes

Ansible utilise les mots-clés loop itérer sur les éléments d'une liste. Pour démontrer, créons un playbook très simple nommé print-list.yml qui vous montre comment imprimer les éléments d'une liste :

[[email protected] plays]$ cat print-list.yml 
---
- name: print list
  hosts: node1
  vars:
    prime: [2,3,5,7,11]
  tasks:
    - name: Show first five prime numbers
      debug:
        msg: "{{ item }}"
      loop: "{{ prime }}"

Remarquez que j'utilise l'item variable avec des boucles Ansible. La tâche serait exécutée cinq fois, ce qui est égal au nombre d'éléments dans le premier liste.

Lors de la première exécution, l'élément sera définie sur le premier élément du tableau principal (2). Lors de la deuxième exécution, la variable d'élément sera définie sur le deuxième élément du tableau principal (3) et ainsi de suite.

Allez-y et lancez le playbook pour voir tous les éléments du prime liste affichée :

[[email protected] plays]$ ansible-playbook print-list.yml 

PLAY [print list] **************************************************************

TASK [Gathering Facts] *********************************************************
ok: [node1]

TASK [Show first five prime numbers] *******************************************
ok: [node1] => (item=2) => {
    "msg": 2
}
ok: [node1] => (item=3) => {
    "msg": 3
}
ok: [node1] => (item=5) => {
    "msg": 5
}
ok: [node1] => (item=7) => {
    "msg": 7
}
ok: [node1] => (item=11) => {
    "msg": 11
}

PLAY RECAP *********************************************************************
node1                      : ok=2    changed=0    unreachable=0    failed=0

Maintenant, vous appliquez des boucles à une application réelle. Par exemple, vous pouvez créer un add-users.yml playbook qui ajouterait plusieurs utilisateurs sur tous les hôtes des dbservers groupe :

[[email protected] plays]$ cat add-users.yml 
---
- name: Add multiple users
  hosts: dbservers
  vars:
    dbusers:
      - username: brad
        pass: pass1
      - username: david
        pass: pass2
      - username: jason
        pass: pass3
  tasks: 
    - name: Add users
      user:
        name: "{{ item.username }}"
        password: "{{ item.pass | password_hash('sha512') }}"
      loop: "{{ dbusers }}"

J'ai d'abord créé un dbusers list qui est essentiellement une liste de hachages/dictionnaires. J'ai ensuite utilisé le utilisateur module avec une boucle pour ajouter les utilisateurs et définir les mots de passe pour tous les utilisateurs dans dbusers liste.

Notez que j'ai également utilisé la notation pointée item.username et jetem.pass pour accéder aux valeurs des clés à l'intérieur des hachages/dictionnaires des dbusers liste.

Il convient également de noter que j'ai utilisé le password_hash('sha512') filtre pour chiffrer les mots de passe des utilisateurs avec le sha512 algorithme de hachage en tant qu'utilisateur module ne permettrait pas de définir des mots de passe utilisateur non chiffrés.

Conseil pour l'examen RHCE :vous aurez accès à la page docs.ansible.com lors de votre examen. C'est une ressource très précieuse, en particulier dans la section « Foire aux questions » ; vous trouverez de nombreuses questions pratiques avec des réponses et des explications.

Exécutons maintenant le add-users.yml livre de jeu :

Lire l'histoire complète

Le reste de l'article est disponible uniquement pour les membres de LHB. Vous pouvez vous inscrire maintenant GRATUITEMENT pour lire le reste de cet article ainsi que l'accès à tous les messages réservés aux membres. Vous êtes également abonné à notre newsletter Linux bimensuelle.

S'abonnerVous avez déjà un compte ?Se connecter
Linux
  1. Déconstruire un playbook Ansible

  2. Comprendre YAML pour Ansible

  3. Aucune liste de types dans ISPConfig 3.1.11

  4. RHCE Ansible Series #8 :chiffrement de contenu avec Ansible Vault

  5. RHCE Ansible Series #7 :Modèles Jinja2

Comment utiliser les boucles dans Ansible Playbook

Une introduction aux faits Ansible

RHCE Ansible Series #2 :Exécution de commandes ad hoc

RHCE Ansible Series #1 :Dites bonjour à Ansible

RHCE Ansible Series #3 :Playbooks Ansible

RHCE Ansible Series #12 :Dépannage Ansible