Attribution de variables aux groupes
Ansible vous permet d'attribuer des variables aux groupes dans le fichier d'inventaire. Ces variables peuvent être utilisées dans les playbooks et les modèles, rendant votre code Ansible plus flexible et réutilisable.
Modifiez le fichier inventory :
nano /home/labex/project/inventory
Mettez à jour le contenu comme suit :
[webservers]
localhost ansible_connection=local
[production:children]
webservers
[webservers:vars]
http_port=80
Cela attribue la variable http_port avec une valeur de 80 à tous les hôtes du groupe webservers. Le suffixe :vars est utilisé pour définir des variables pour un groupe.
Enregistrez et quittez l'éditeur.
Maintenant, créons un simple playbook pour afficher cette variable. Un playbook est un fichier YAML qui définit un ensemble de tâches à exécuter sur les hôtes. Créez un nouveau fichier nommé show_http_port.yml :
nano /home/labex/project/show_http_port.yml
Ajoutez le contenu suivant :
---
- name: Show HTTP Port
hosts: webservers
tasks:
- name: Display HTTP Port
debug:
msg: "The HTTP port is {{ http_port }}"
Ce playbook :
- Cible le groupe
webservers
- A une seule tâche qui utilise le module
debug pour afficher un message
- Utilise la syntaxe
{{ http_port }} pour faire référence à la variable que nous avons définie dans l'inventaire
Enregistrez et quittez l'éditeur.
Exécutez le playbook :
ansible-playbook -i inventory show_http_port.yml
Vous devriez voir une sortie affichant la valeur du port HTTP :
PLAY [Show HTTP Port] ********************************************************
TASK [Gathering Facts] ********************************************************
ok: [localhost]
TASK [Display HTTP Port] ******************************************************
ok: [localhost] => {
"msg": "The HTTP port is 80"
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Cela démontre que la variable que nous avons définie dans l'inventaire est accessible dans notre playbook.