GNU/Linux >> Tutoriels Linux >  >> Linux

Comment passer des variables supplémentaires à un playbook Ansible

Avec Ansible, les utilisateurs ont la possibilité d'accepter des entrées externes lors de l'exécution de leurs playbooks Ansible sans modifier le contenu du playbook Ansible. Cela peut être fait via la possibilité de transmettre des variables supplémentaires à un playbook Ansible. Cette fonctionnalité est disponible lors de l'utilisation de la CLI Ansible ou de la tour Ansible.

Pourquoi des variables supplémentaires ?

Pourquoi devrais-je transmettre des variables à un playbook Ansible alors que je peux déclarer chaque variable et valeur dans le playbook ou dans des fichiers variables ? C'était une question récente que j'ai reçue la dernière fois que j'ai expliqué le concept d'utilisation de l'option extra vars dans Ansible.

La réponse devient explicite lorsque vous rencontrez des scénarios tels que les suivants :

  • Que ferez-vous si vous souhaitez modifier la valeur d'une variable ? Modifier le playbook ou le fichier variable ?
  • Que ferez-vous si vous souhaitez utiliser des valeurs différentes pour une variable à chaque fois que vous exécutez le playbook Ansible ?
  • Que ferez-vous si vous souhaitez utiliser des valeurs pour certaines variables uniquement lors de l'exécution du playbook ?

Bien que ces questions ne fassent qu'effleurer la surface, il devient clair que lorsque vous recherchez la flexibilité, le supplément Ansible fonction variable est la meilleure réponse pour la plupart de ces solutions. Les cas d'utilisation suivants expliquent comment vous pouvez utiliser des variables supplémentaires pour ajouter de la flexibilité à vos playbooks Ansible.

Le codage en dur des hôtes est une mauvaise idée

Par exemple, vous créez un playbook Ansible qui s'exécute sur un ensemble spécifique d'hôtes et définit ces hôtes sur un groupe intitulé :webgroup. Au fur et à mesure que vous terminez les tests de votre playbook Ansible, vous l'activez pour une utilisation en production.

Malheureusement, l'équipe d'exploitation ou les ingénieurs doivent exécuter ce playbook sur un autre groupe d'hôtes appelé appgroup . En codant explicitement en dur le nom du groupe d'hôtes dans le playbook Ansible, vous avez limité sa flexibilité nécessitant des modifications dans le playbook Ansible lui-même.

Quelle est la meilleure méthode pour résoudre ce problème ?

L'utilisation du paramètre --extra-vars et la modification du playbook Ansible pour prendre une variable (par exemple, des nœuds) lors de la déclaration de vos hôtes. L'exemple suivant l'illustre :

- hosts: "{{ nodes }}"
  vars_files:
    - vars/main.yml
  roles:
    - { role: geerlingguy.apache }

Pour transmettre une valeur aux nœuds , utilisez le --extra-vars ou -e option lors de l'exécution du playbook Ansible, comme indiqué ci-dessous.

# ansible-playbook myplaybook.yaml --extra-vars "nodes=webgroup”

## Or

# ansible-playbook myplaybook.yaml --extra-vars "nodes=appgroup”

Cela vous permet d'éviter l'exécution accidentelle du playbook sur des hôtes codés en dur. Si le playbook Ansible ne parvient pas à spécifier les hôtes lors de l'exécution, Ansible générera une erreur et s'arrêtera, indiquant pas de valeur pour les nœuds .

Contrôlez vos variables depuis l'extérieur des rôles Ansible

Les rôles Ansible sont un ensemble de modèles, de fichiers, de variables, de modules, de gestionnaires et de tâches créés dans le but de simplifier la réutilisation du code Ansible.

Dans une structure de répertoires de rôles Ansible, vous aurez deux types de variables dans les répertoires suivants :

  • defaults/main.yml - contient des variables pour un rôle qui peuvent être personnalisées en fonction de l'utilisation souhaitée du rôle.
  • vars/main.yml - contient des variables pour un rôle qui ne sont pas destinées à être modifiées.

* Étant donné que --extra-vars a une priorité plus élevée que vars/main.yml, les variables peuvent être modifiées à l'aide du paramètre --extra-vars. Les variables modifiables doivent résider dans defaults/main.yml

Vous pouvez définir les valeurs des variables à l'aide de --extra-vars .

Par exemple, en utilisant un port différent dans une installation Apache comme ci-dessous (en supposant que les variables sont définies dans le fichier defaults/main.yml) :

# ansible-playbook deploy-apache.yaml --extra-vars “apache_listen_port=8080”

Si vous avez plusieurs valeurs à transmettre, essayez ceci :

# ansible-playbook deploy-apache.yaml --extra-vars “apache_listen_port=8080 apache_listen_port_ssl=443”

Comment passer des variables contenant des espaces ?

Vous devez ajouter des guillemets aux valeurs de chaîne avec des espaces pour les transmettre en tant que variables supplémentaires :

# ansible-playbook deploy-apache.yaml --extra-vars "apache_ssl_protocol='All -SSLv2 -SSLv3'"

Récapitulez

[ Besoin d'en savoir plus sur Ansible ? Suivez un cours de présentation technique gratuit de Red Hat. Ansible Essentials :Présentation technique de la simplicité dans l'automatisation. ]

Ceci n'est qu'un aperçu des différentes options sur la façon de transmettre des variables à un playbook Ansible. Pour découvrir d'autres façons de transmettre des variables aux playbooks Ansible, comme l'utilisation de fichiers JSON et de fichiers de variables externes, consultez le site de documentation d'Ansible.


Linux
  1. Déconstruire un playbook Ansible

  2. Comment créer un Playbook Ansible

  3. Comment installer des packages logiciels avec un playbook Ansible

  4. Comment transmettre des variables d'environnement aux conteneurs Docker

  5. comment créer un playbook Ansible pour obtenir les versions du système d'exploitation des hôtes distants ?

Comment utiliser les gestionnaires dans Ansible Playbook

Comment créer des rôles Ansible et les utiliser dans Playbook

Comment créer des playbooks Ansible pour l'automatisation informatique

Comment définir et utiliser des gestionnaires dans des playbooks Ansible

Comment créer et exécuter un fichier Playbook Ansible

Comment utiliser Ansible pour configurer Vim