Comment Travailler avec les variables Ansible et les Faits – Partie 8

Nous avons mentionné les variables dans cette série Ansible et juste pour vous détendre un peu. Une variable, comme dans de nombreux langages de programmation, est essentiellement une clé qui représente une valeur.

Qu’est-ce qui constitue un nom de variable valide ?

Un nom de variable comprend des lettres, des chiffres, des traits de soulignement ou un mélange de 2 ou de tous. Cependant, gardez à l’esprit qu’un nom de variable doit toujours commencer par une lettre et ne doit pas contenir d’espaces.

Jetons un coup d’œil à quelques exemples de noms de variables valides et inacceptables :

Exemples de noms de variables valides:

football foot_ballfootball20 foot_ball20

Exemples de Noms de variables Non valides:

foot ball20 foot-ball

Discutons des types de variables:

Variables de Playbook

Les variables de Playbook sont assez faciles et directes. Pour définir une variable dans un playbook, utilisez simplement le mot-clé vars avant d’écrire vos variables avec indentation.

Pour accéder à la valeur de la variable, placez-la entre les doubles accolades entourées de guillemets.

Voici un exemple de livre de jeu simple:

- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"

Dans le playbook ci-dessus, la variable de salutation est remplacée par la valeur Hello world! lorsque le playbook est exécuté. Le playbook imprime simplement le message Hello world! lors de l’exécution.

Variables de Playbook dans Ansible

De plus, vous pouvez avoir une liste ou un tableau de variables comme indiqué:

Le playbook ci-dessous montre une variable appelée continents. La variable contient 5 valeurs différentes – noms de continent. Chacune de ces valeurs est facilement accessible en utilisant l’indice 0 comme première variable.

L’exemple du playbook ci-dessous récupère et affiche Asia (Index 1).

Tableau de variables dans Ansible

La liste de variables peut également être structurée comme indiqué:

vars: Continents: 

Pour lister tous les éléments de la liste, utilisez le module with_items. Cela parcourra toutes les valeurs du tableau.

Liste des variables de tableau Ansible

Un autre type de variable Ansible est la variable dictionnaire.Les variables de dictionnaire

sont en outre prises en charge dans le playbook. Pour définir la variable du dictionnaire, identifiez simplement la paire clé-valeur juste en dessous du nom de la variable du dictionnaire.

hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2

Dans l’exemple ci-dessus, vlans est la variable du dictionnaire tandis que id et port sont les paires clé-valeur.

Pour port_id, puisque nous commençons la valeur par du texte et non la variable, les guillemets ne sont pas nécessaires pour entourer les accolades.

Variables spéciales

Ansible fournit une liste de variables prédéfinies qui peuvent être référencées dans les modèles et les playbooks Jinja2 mais ne peuvent pas être modifiées ou définies par l’utilisateur.

Collectivement, la liste des variables prédéfinies Ansible est appelée Faits Ansible et celles-ci sont rassemblées lors de l’exécution d’un playbook.

Pour obtenir une liste de toutes les variables Ansible, utilisez le module de configuration dans la commande ad hoc Ansible comme indiqué ci-dessous:

# ansible -m setup hostname

Cela affiche la sortie au format JSON comme indiqué:

# ansible -m setup localhost
Liste des variables Ansible

À partir de la sortie, nous pouvons voir que certains des exemples de variables spéciales Ansible incluent:

Il existe de nombreuses autres variables spéciales Ansible ce ne sont que quelques exemples.

Ces variables peuvent être utilisées dans un modèle Jinja2 comme indiqué:

Variables d’inventaire

Enfin, sur la liste, nous avons des variables d’inventaire Ansible. Un inventaire est un fichier au format INI qui contient tous les hôtes à gérer par Ansible.

Dans les inventaires, vous pouvez affecter une variable à un système hôte et l’utiliser ultérieurement dans un playbook.

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080

Ce qui précède peut être représenté dans un fichier YAML playbook comme indiqué:

--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080

Si les systèmes hôtes partagent les mêmes variables, vous pouvez définir un autre groupe dans le fichier d’inventaire pour le rendre moins lourd et éviter les répétitions inutiles.

Par exemple:

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80

Ce qui précède peut être structuré comme suit:

web_server_1web_server_2ansible_user=centoshttp_port=80

Et dans le fichier YAML du playbook, cela sera défini comme indiqué:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80

Faits Ansible

Lors de l’exécution de playbooks, la première tâche effectuée par Ansible est l’exécution de la tâche de configuration. Je suis presque sûr que vous avez dû tomber sur la sortie:

TASK: *********

Les faits Ansible ne sont rien d’autre que des propriétés système ou des informations sur les nœuds distants auxquels vous vous êtes connecté. Ces informations incluent l’architecture du système, la version du système d’exploitation, les informations du BIOS, l’heure et la date du système, la disponibilité du système, l’adresse IP et les informations matérielles pour n’en citer que quelques-unes.

Pour obtenir les faits sur n’importe quel système, utilisez simplement le module de configuration comme indiqué dans la commande ci-dessous:

# ansible -m setup hostname

Par exemple:

# ansible -m setup database_server

Cela imprime un grand ensemble de données au format JSON comme indiqué:

Ansible Get System Facts

Les faits Ansible sont utiles pour aider les administrateurs système à effectuer les opérations, par exemple, selon le système d’exploitation, ils sont capables de savoir quels paquets logiciels doivent être installés, et comment ils doivent être configurés, etc.

Faits personnalisés

Saviez-vous également que vous pouvez créer vos propres faits personnalisés qui peuvent être rassemblés par Ansible? Oui, tu peux. Alors, comment vous y prenez-vous? Changeons de vitesse et voyons comment.

La première étape consiste à créer un /etc/ansible/facts.d répertoire sur le nœud géré ou distant.

Dans ce répertoire, créez un fichier(s) avec une extension .fact. Ce ou ces fichiers renverront des données JSON lorsque le playbook est exécuté sur le nœud de contrôle Ansible, ce qui inclut les autres faits qu’Ansible récupère après l’exécution d’un playbook.

Voici un exemple de fichier de faits personnalisé appelé date_time.fait qui récupère la date et l’heure.

# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact

Ajoutez-y les lignes suivantes.

#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"

Enregistrez et quittez le fichier.

Attribuez maintenant les autorisations d’exécution:

# chmod +x /etc/ansible/facts.d/date_time.fact

Maintenant, j’ai créé un playbook sur le nœud de contrôle Ansible appelé check_date.lml.

---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}

Ajoute le fichier de faits à la variable ansible_local. L’ansible_local stocke tous les faits personnalisés.

Maintenant, exécutez le playbook et observez une récupération possible des informations enregistrées dans le fichier fact:

# ansible_playbook check_date.yml
Créer des faits personnalisés Ansible
Conclusion

Cela nous amène à la fin de ce tutoriel sur le travail avec les variables et les faits Ansible.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Previous post STEPHEN SCHWARTZ – WICKED BON COMPOSITEUR
Next post 7 Façons Dont vos Enfants Pourraient Contourner le Logiciel de contrôle Parental