Comment travailler avec des variables et des faits ANSIBLE - Partie 8

Comment travailler avec des variables et des faits ANSIBLE - Partie 8

Nous avons mentionné les variables dans cette série anible et juste pour vous rafraîchir un peu d'esprit. UN variable, Tout comme dans de nombreux langages de programmation, est essentiellement une clé qui représente une valeur.

Ce qui constitue un nom de variable valide?

Un nom de variable comprend des lettres, des chiffres, des soulignements ou un mélange de 2 ou tous. Cependant, gardez à l'esprit qu'un nom 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 nom de variable valide:

Football Foot_Ball Football20 Foot_Ball20 

Exemples de nom de variable non valide:

balle à pied 20 pieds-ball 

Discutons des types de variables:

1. Playbook Variables

Livre de jeu Les variables sont assez faciles et simples. Pour définir une variable dans un livre de jeu, Utilisez simplement le mot-clé varbac Avant d'écrire vos variables avec l'indentation.

Pour accéder à la valeur de la variable, placez-la entre les accolades à double boucle enfermées avec des guillemets.

Voici un exemple de livre de jeu simple:

- Hôtes: tous les variables: salutation: Bonjour le monde! Tâches: - Nom: Exemple de variable de base Ansible Debug: msg: " salutation  " 

Dans le livre de jeu ci-dessus, le salutation la variable est remplacée par la valeur Bonjour le monde! Lorsque le livre de jeu est exécuté. Le playbook imprime simplement le message Bonjour le monde! Lorsqu'il est exécuté.

Playbook Variables dans ANIBLE

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

Le livre de jeu 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 Index 0 Comme la première variable.

L'exemple du manuel ci-dessous récupère et affiche Asie (Index 1).

- Hôtes: All Vars: continents: - Afrique - Asie - Amérique du Sud - Amérique du Nord - Europe Tâches: - Nom: ANSIBLE LISTE EXEMPLE VARIABLE DE DÉBUG: MSG: "continents [1]" 
Tableau de variables dans ANSIBLE

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

VARS: Continents: [Afrique, Asie, Amérique du Sud, Amérique du Nord, Europe] 

Pour répertorier tous les éléments de la liste, utilisez le avec_items module. Cela traversera toutes les valeurs du tableau.

- Hôtes: All Vars: Continents: [Afrique, Asie, Amérique du Sud, Amérique du Nord, Europe] Tâches: - Nom: ANSIBLE VARAY VARAYES Exemple de débogage: MSG: " article  "avec_items: -"  continents  " 
Liste des variables de tableau ANSIBL

Un autre type de variable anible est le dictionnaire variable.

Dictionnaire Les variables sont également prises en charge dans le livre de jeu. Pour définir la variable du dictionnaire, identifiez simplement la paire de valeurs clés juste en dessous du nom de la variable du dictionnaire.

Hôtes: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 VLAN: ID: 10 Port: 2 

Dans l'exemple ci-dessus, vlans est la variable du dictionnaire pendant que identifiant et port sont les paires de valeurs clés.

hôtes: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 port: 20 tâches: nom: configurer la passerelle de défaut System_configs: default_gateway_ip: "default_gateway" name: étiquette sur Vlan 10 vlans ['id'] " port_id: 1/1 / vlans ['port'] 

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

2. Variables spéciales

ANSIBLE fournit une liste de variables prédéfinies qui peuvent être référencées dans des modèles et manuels Jinja2 mais ne peuvent pas être modifiés ou définis par l'utilisateur.

Collectivement, la liste des variables prédéfinies anibles est appelée Faits anibles Et ceux-ci sont rassemblés lorsqu'un livre de jeu est exécuté.

Pour obtenir une liste de toutes les variables anibles, utilisez le installation Module dans la commande ad-hoc ANSIBLE comme indiqué ci-dessous:

# ANSIBLE -M SETUP HOSTNAM 

Cela affiche la sortie au format JSON comme indiqué:

# anible -m configuration localhost 
Liste des variables anibles

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

ANSIBLE_ARCHITECTURE ANSIBLE_BIOS_DATE ANSIBLE_BIO 

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

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

  

Le nom d'hôte de ce serveur Web est ANSIBLE_HOSTNAME

Il fonctionne sur anible_os_familysystème

3. Variables d'inventaire

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

Dans les stocks, vous pouvez affecter une variable à un système hôte et l'utiliser plus tard dans un livre de jeu.

[web_servers] web_server_1 anible_user = centos http_port = 80 web_server_2 anible_user = ubuntu http_port = 8080 

Ce qui précède peut être représenté dans un livre de jeu Yaml fichier comme indiqué:

--- web_servers: web_server_1: anible_user = centos http_port = 80 web_server_2: anible_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 une répétition inutile.

Par exemple:

[web_servers] web_server_1 anible_user = centos http_port = 80 web_server_2 anible_user = centos http_port = 80 

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

[web_servers] web_server_1 web_server_2 [web_servers: vars] anible_user = centos http_port = 80 

Et dans le livre de jeu Yaml Fichier, cela sera défini comme indiqué:

--- web_servers: hôtes: web_server_1: web_server_2: vars: anible_user = centos http_port = 80 

Faits anibles

Lors de l'exécution de PlayBooks, la première tâche qu'Anble fait est l'exécution de la tâche de configuration. Je suis à peu près sûr que vous devez avoir rencontré la sortie:

Tâche: [rassemblant des faits] ********* 

Les faits ansibles ne sont que des propriétés système ou des informations sur les nœuds distants auxquels vous avez connecté. Ces informations comprennent l'architecture 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-uns.

Pour obtenir les faits sur n'importe quel système, utilisez simplement le installation Module comme indiqué dans la commande ci-dessous:

# ANSIBLE -M SETUP HOSTNAM 

Par exemple:

# ANSIBLE -M SETUP DATABASE_SERVER 

Cela imprime un grand ensemble de données dans Json Format comme indiqué:

ANSIBLE obtenir des faits système

Les faits ansibles sont pratiques pour aider les administrateurs du système que les opérations à effectuer, par exemple, selon le système d'exploitation, ils peuvent savoir quels packages de 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, vous pouvez. Alors comment allez-vous? Déhibons les engrenages et voyons comment.

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

À l'intérieur de ce répertoire, créez un (s) fichier (s) avec un .fait extension. Ce (s) fichier (s) reviendra Json Données lorsque le livre de jeu est exécuté sur le nœud de contrôle Ansible, qui inclut les autres faits qu'Anible récupère après un livre de jeu.

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

# mkdir -p / etc / anible / faits.D # vim / etc / anible / faits.d / date_time.fait 

Ajouter les lignes suivantes.

#!/ bin / bash date = "date" echo "\" date \ "": \"" $ date \ """" 

Enregistrer et quitter le fichier.

Attribuez maintenant les autorisations d'exécution:

# chmod + x / etc / anible / faits.d / date_time.fait 

Maintenant, j'ai créé un livre de jeu sur le nœud de contrôle anible appelé date de vérification, date du chèque.YML.

--- - Hôtes: Tâches de serveurs Web: - Nom: Obtenez des faits personnalisés Debug: MSG: Le fait personnalisé est ANSIBLE_LOCAL.date_time 

Ajouter le fichier de faits au ANIBLE_LOCAL variable. Le ANIBLE_LOCAL stocke tous les faits personnalisés.

Exécutez maintenant le playbook et observez une récupération des informations enregistrées sur le fichier de faits:

# ANSIBLE_PLAYBOOK CHECK_DATE.YML 
Créer des faits personnalisés ansibles
Conclusion

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

"