GNU/Linux >> Tutoriels Linux >  >> Linux

RHCE Ansible Series #4 :Ansible Variables, Facts and Registers

Il y aura toujours de nombreuses variations entre vos systèmes gérés. Pour cette raison, vous devez apprendre à utiliser les variables Ansible.

Dans ce tutoriel, vous apprendrez à définir et à référencer des variables Ansible. Vous apprendrez également à utiliser les faits Ansible pour récupérer des informations sur vos nœuds gérés.

De plus, vous apprendrez également à utiliser les registres pour capturer la sortie des tâches.

Si c'est la première fois que vous venez ici, veuillez consulter les chapitres précédents de cette série :

  • Ansible RHCE #1 :Présentation et installation
  • Ansible RHCE #1 :Exécuter des commandes ad hoc
  • Ansible RHCE #1 :Comprendre les playbooks

Partie 1 :Travailler avec des variables dans Ansible

Commençons d'abord par les variables. Gardez à l'esprit que tout cela est écrit dans votre fichier YML.

Définir et référencer des variables

Vous pouvez utiliser les vars mot-clé pour définir des variables directement dans un playbook.

Par exemple, vous pouvez définir un fav_color variable et définissez sa valeur sur jaune comme suit :

---
- name: Working with variables
  hosts: all
  vars:
    fav_color: yellow

Maintenant, comment utilisez-vous (référence) le fav_color variable? Ansible utilise le système de modèles Jinja2 pour travailler avec des variables. Il y aura un didacticiel dédié qui traite de Jinja2 dans cette série, mais pour l'instant, vous avez juste besoin de connaître les bases.

Pour obtenir la valeur de la fav_color variable; vous devez l'entourer d'une paire d'accolades comme suit :

My favorite color is {{ fav_color }}

Notez que si votre variable est le premier élément (ou le seul élément) de la ligne, l'utilisation de guillemets est obligatoire comme suit :

"{{ fav_color }} is my favorite color."

Écrivons maintenant un playbook nommé variables-playbook.yml qui met tout cela ensemble :

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    fav_color: yellow
  tasks:
    - name: Show me fav_color value
      debug:
        msg: My favorite color is {{ fav_color }}.

J'ai utilisé le débogage module avec le msg option du module pour imprimer la valeur de la fav_color variables.

Lancez maintenant le playbook et vous verrez votre couleur préférée s'afficher comme suit :

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

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

TASK [Show me fav_color value] *************************************************
ok: [node1] => {
    "msg": "My favorite color is yellow."
}

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

Créer des listes et des dictionnaires

Vous pouvez également utiliser des listes et des dictionnaires pour définir des variables à valeurs multiples. Par exemple, vous pouvez définir une liste nommée port_nums et définissez sa valeur comme suit :

  vars:
    port_nums: [21,22,23,25,80,443]

Vous auriez également pu utiliser la méthode suivante pour définir port_nums qui est équivalent :

vars:
    port_nums:
      - 21
      - 22
      - 23
      - 25
      - 80
      - 443

Vous pouvez imprimer toutes les valeurs dans port_nums comme suit :

All the ports {{ port_nums }}

Vous pouvez également accéder à un élément de liste spécifique :

First port is {{ port_nums[0] }}

Notez que vous utilisez un index (position) pour accéder aux éléments de la liste.

Vous pouvez également définir un dictionnaire nommé users comme suit :

vars:
    users:
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh

Il existe deux manières différentes d'accéder aux éléments du dictionnaire :

  • dict_name['key'] -> utilisateurs['bob']['shell']
  • dict_name.key -> users.bob.shell

Notez que vous utilisez une clé pour accéder aux éléments du dictionnaire.

Vous pouvez maintenant modifier les variables-playbook.yml playbook pour montrer les listes et les dictionnaires en action :

[[email protected] plays]$ cat variables-playbook.yml 
---
- name: Working with variables
  hosts: node1
  vars:
    port_nums: [21,22,23,25,80,443]
 
    users: 
      bob:
        username: bob
        uid: 1122
        shell: /bin/bash
      lisa:
        username: lisa
        uid: 2233
        shell: /bin/sh
  tasks:
    - name: Show 2nd item in port_nums
      debug:
        msg: SSH port is {{ port_nums[1] }}

    - name: Show the uid of bob
      debug:
        msg: UID of bob is {{ users.bob.uid }}

Vous pouvez maintenant exécuter le playbook pour afficher le deuxième élément dans port_nums et affichez l'uid de bob :

[[email protected] plays]$ ansible-playbook variables-playbook.yml 

PLAY [Working with variables] **************************************************

TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
    "msg": "SSH port is 22"
}

TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
    "msg": "UID of bob is 1122"
}

Inclusion de variables externes

Tout comme vous pouvez importer (ou inclure) des tâches dans un playbook. Vous pouvez également faire la même chose avec des variables. Autrement dit, dans un playbook, vous pouvez inclure des variables définies dans un fichier externe.

Pour illustrer, créons un fichier nommé myvars.yml qui contient nos port_nums liste et utilisateurs dictionnaire :

[[email protected] plays]$ cat myvars.yml 
---
port_nums: [21,22,23,25,80,443]

users:
  bob:
    username: bob
    uid: 1122
    shell: /bin/bash
  lisa:
    username: lisa
    uid: 2233
    shell: /bin/sh

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. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment installer et tester Ansible sur Linux

  3. Comment passer des variables supplémentaires à un playbook Ansible

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

  5. RHCE Ansible Series #9 :Rôles Ansible

Fichiers d'inventaire et de configuration Ansible

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