Vous pouvez définir trois types de faits personnalisés dans Ansible.
1) Faits mondiaux : Ces faits sont accessibles depuis chaque hôte de votre fichier d'inventaire.
2) Faits de groupe : Ces faits ne sont accessibles qu'à partir d'un ensemble spécifique d'hôtes ou d'un groupe d'hôtes.
3) Informations sur l'hôte : Ces faits ne sont accessibles qu'à partir d'un hébergeur particulier.
Dans cet article, je vais vous montrer comment travailler avec les faits personnalisés Ansible. Alors, commençons.
Conditions préalables:
Si vous voulez essayer les exemples de cet article,
1) Vous devez avoir Ansible installé sur votre ordinateur.
2) Vous devez avoir au moins 6 hôtes Linux configurés pour l'automatisation Ansible.
Il existe de nombreux articles sur LinuxHint dédiés à l'installation d'Ansible et à la configuration des hôtes pour l'automatisation d'Ansible. Vous pouvez les consulter si besoin.
Configuration d'un répertoire de projet :
Avant de commencer, créons un répertoire de projet afin que nous puissions organiser nos fichiers de projet.
Pour créer un répertoire de projet faits-personnalisés/ dans votre DOMICILE répertoire, exécutez la commande suivante :
$ mkdir -pv custom-facts/playbooks,host_vars,group_vars
Maintenant, naviguez jusqu'au faits-personnalisés/ répertoire comme suit :
$ cd faits-personnalisés/
Créer un fichier de configuration Ansible ansible.cfg dans votre répertoire de projet comme suit :
$ nano ansible.cfg
Tapez dans les lignes suivantes votre ansible.cfg déposer.
[valeurs par défaut]inventaire = hôtes
host_key_checking = False
Une fois que vous avez terminé, appuyez sur
Maintenant, créez un fichier d'inventaire Ansible hôtes dans votre répertoire de projet comme suit :
$ nano hôtes
Tapez les lignes suivantes dans votre l'hôte fichier d'inventaire.
vm1.nœudkite.comvm2.nœudkite.com
[la toile]
vm3.nœudkite.com
vm4.nœudkite.com
[base de données]
vm[5:6].nœudkite.com
Une fois que vous avez terminé, appuyez sur
Pour répertorier tous les hôtes disponibles dans votre fichier d'inventaire, exécutez la commande suivante :
$ ansible all --list-hostsComme vous pouvez le voir, j'ai six hôtes dans mon fichier d'inventaire.
Pour lister les hôtes disponibles dans le la toile groupe de votre fichier d'inventaire, exécutez la commande suivante :
$ ansible web --list-hostsComme vous pouvez le voir, j'ai deux hôtes (vm3.nœudkite.com et vm4.nœudkite.com) dans le la toile groupe de mon fichier d'inventaire.
Pour lister les hôtes disponibles dans le base de données groupe de votre fichier d'inventaire, exécutez la commande suivante :
$ base de données ansible --list-hostsComme vous pouvez le voir, j'ai deux hôtes (vm5.nœudkite.com et vm6.nœudkite.com) dans le base de données groupe de mon fichier d'inventaire.
Travailler avec Ansible Global Facts :
Dans cette section, je vais vous montrer comment définir des faits/variables globaux Ansible dans votre fichier d'inventaire et y accéder à partir de vos playbooks Ansible. Je vais également vous montrer comment définir des faits/variables globaux dans un fichier séparé.
Tout d'abord, ouvrez le l'hôte fichier d'inventaire avec la commande suivante :
$ nano hôtes
Maintenant, ajoutez les lignes marquées dans votre l'hôte fichier d'inventaire. Une fois que vous avez terminé, appuyez sur
'
Vous ajoutez des faits globaux dans le tout:vars section. Ici, j'ai ajouté le URL_web fait mondial.
Maintenant, créez un nouveau playbook print_global_fact.yaml dans le cahiers/ répertoire comme suit :
$ nano playbooks/print_global_fact.yaml
Ensuite, tapez les lignes suivantes dans le print_global_fact.yaml déposer.
- hôtes : tousutilisateur : ansible
Tâches:
- name : affiche la valeur du fait global 'web_url'
déboguer:
msg : "URL Web : web_url"
Le but de ce playbook est d'imprimer le URL_web fait mondial.
Une fois que vous avez terminé, appuyez sur
Maintenant, lancez le print_global_fact.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/print_global_fact.yaml
Comme vous pouvez le voir, tous les hôtes de mon fichier d'inventaire peuvent accéder au fait global URL_web.
Vous pouvez également ajouter des faits globaux dans un fichier séparé. De cette façon, vous pouvez garder le fichier d'inventaire propre. Voyons comment faire.
Tout d'abord, retirons les faits globaux de la l'hôte fichier d'inventaire.
$ nano hôtes
Maintenant, supprimez les lignes marquées du fichier d'inventaire et appuyez sur
Ensuite, créez un nouveau fichier tout dans le var_groupe/ répertoire comme suit :
$ nano group_vars/all
Pour ajouter le fait global URL_web, tapez la ligne suivante dans le vars_groupe/tous déposer.
URL_web : https://www.astuce linux.comUne fois que vous avez terminé, appuyez sur
Pour vérifier si vous pouvez accéder au fait global URL_web, exécuter le print_global_fact.yaml playbook à nouveau comme suit :
$ ansible-playbook playbooks/print_global_fact.yaml
Comme vous pouvez le voir, tous les hôtes de mon fichier d'inventaire peuvent accéder au fait global URL_web.
Travailler avec Ansible Group Facts :
Dans cette section, je vais vous montrer comment définir des faits/variables de groupe Ansible dans votre fichier d'inventaire et y accéder à partir de vos playbooks Ansible. Je vais également vous montrer comment définir des faits/variables de groupe dans un fichier séparé.
Tout d'abord, ouvrez le l'hôte fichier d'inventaire avec la commande suivante :
$ nano hôtes
Si vous avez un groupe d'accueil groupe 1, puis vous ajoutez des faits/variables de groupe pour ce groupe d'hôtes dans un groupe1:vars section de votre fichier d'inventaire.
[groupe 1]…
[groupe1:vars]
variable1=valeur1
variable2=valeur2
Par exemple, pour ajouter le groupe faits/variables nom de domaine et bases de données_backends pour le la toile groupe d'hôtes, vous pouvez saisir les lignes marquées dans votre fichier d'inventaire.
Une fois que vous avez terminé, appuyez sur
Pour imprimer et tester si nous pouvons accéder aux faits du groupe, créez un nouveau playbook print_group_facts.yaml dans le cahiers/ répertoire comme suit :
$ nano playbooks/print_group_facts.yaml
Tapez les lignes suivantes dans votre print_group_facts.yaml déposer.
- hébergeurs : webutilisateur : ansible
Tâches:
- nom : Imprimer les faits du groupe
déboguer:
msg : "Nom de domaine : domain_name Base de données principale : database_backend"
Une fois que vous avez terminé, appuyez sur
Maintenant, lancez le print_group_facts.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/print_group_facts.yaml
Comme vous pouvez le voir, les hôtes du la toile le groupe peut accéder au nom de domaine et base de données_backend faits/variables de groupe.
Maintenant, nettoyons le fichier d'inventaire et voyons comment ajouter des faits/variables de groupe dans un fichier séparé.
Tout d'abord, ouvrez le l'hôte fichier d'inventaire comme suit :
$ nano faits
Supprimez les lignes marquées du l'hôte fichier d'inventaire. Une fois que vous avez terminé, appuyez sur
Comme nous ajoutons des variables de groupe pour le la toile groupe d'hôtes, créer un nouveau fichier la toile (identique au nom du groupe) dans le var_groupe/ répertoire comme suit :
$ nano group_vars/web
Pour ajouter les faits du groupe nom de domaine et base de données_backend pour le la toile groupe d'hôtes, ajoutez les lignes suivantes dans le vars_groupe/web déposer.
nom_domaine : web.astuce linux.comdatabase_backend : pgsql
Une fois que vous avez terminé, appuyez sur
Pour vérifier si les hôtes du la toile groupe peut accéder aux faits du groupe, exécuter le print_group_facts.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/print_group_facts.yaml
Comme vous pouvez le voir, les hôtes du la toile le groupe peut accéder au nom de domaine et base de données_backend faits/variables de groupe.
Travailler avec Ansible Host Facts :
Dans cette section, je vais vous montrer comment définir les faits/variables de l'hôte Ansible dans votre fichier d'inventaire et y accéder à partir de vos playbooks Ansible. Je vais également vous montrer comment définir les faits/variables de l'hôte dans un fichier séparé.
Tout d'abord, ouvrez le l'hôte fichier d'inventaire avec la commande suivante :
$ nano hôtes
Vous pouvez ajouter des faits/variables d'hôte après le nom DNS ou l'adresse IP de l'hôte dans votre fichier d'inventaire comme suit :
www.domaine1.com variable1=valeur1 variable2=valeur2192.168.22.2 variable1=valeur3 variable2=valeur4
Par exemple, vous pouvez ajouter des faits/variables d'hôte nom de domaine et base de données_backend pour les hôtes vm3.nœudkite.com et vm4.nœudkite.com, comme indiqué dans la capture d'écran ci-dessous.
Notez que la valeur de la nom de domaine et base de données_backend les faits/variables sont différents pour chaque hôte.
Une fois que vous avez terminé d'ajouter les faits/variables de l'hôte, appuyez sur
Comme j'ai ajouté les mêmes faits/variables que dans l'exemple de faits/variables de groupe, nous pouvons utiliser le print_group_facts.yaml playbook pour tester l'accessibilité de ces faits/variables ainsi.
Exécutez le print_group_facts.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/print_group_facts.yaml
Comme vous pouvez le voir, les faits/variables de l'hôte sont accessibles à leur hôte spécifié. Les valeurs sont également différentes pour chaque hôte.
Comme chacun des hôtes se trouve sur une ligne distincte dans mon fichier d'inventaire, je pourrais facilement ajouter des faits/variables d'hôte dans mon fichier d'inventaire. Mais, si vous utilisez des plages pour définir des hôtes dans votre fichier d'inventaire comme indiqué dans la capture d'écran ci-dessous, vous ne pouvez pas ajouter de faits/variables d'hôte comme ça.
Vous pouvez ajouter des faits/variables d'hôte dans un fichier séparé, comme vous l'avez fait pour les faits/variables globaux et de groupe.
Pour ajouter des faits/variables d'hôte pour le vm5.nœudkite.com hôte, créez un nouveau fichier vm5.nœudkite.com (identique au nom DNS de l'hôte) dans le host_vars/ répertoire comme suit :
$ nano host_vars/vm5.nœudkite.com
Vous pouvez ajouter les faits/variables de l'hôte db_port et nom_base pour l'hôte vm5.nœudkite.com avec les lignes suivantes.
db_port : 3306nom_base : demo1
Une fois que vous avez terminé, appuyez sur
De la même manière, pour ajouter des faits/variables d'hôte pour l'hôte vm6.nœudkite.com, créer un nouveau fichier vm6.nœudkite.com dans le host_vars/ répertoire comme suit :
$ nano host_vars/vm6.nœudkite.com
Vous pouvez ajouter les faits/variables de l'hôte db_port et nom_base pour l'hôte vm6.nœudkite.com avec les lignes suivantes.
db_port : 8877nom_base : app1
Une fois que vous avez terminé, appuyez sur
Pour imprimer et tester si nous pouvons accéder aux faits/variables de l'hôte, créez un nouveau playbook print_host_facts.yaml dans le cahiers/ répertoire comme suit :
$ nano playbooks/print_host_facts.yaml
Maintenant, tapez les lignes suivantes dans le print_host_facts.yaml déposer.
- hôtes : base de donnéesutilisateur : ansible
Tâches:
- nom : Imprimer les informations sur l'hôte
déboguer:
msg : "Nom de la base de données : db_name Port de la base de données : db_port"
Une fois que vous avez terminé, appuyez sur
Pour vérifier si l'hôte vm5.nœudkite.com et vm6.nœudkite.com peut accéder aux faits/variables de l'hôte, exécutez le print_host_facts.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/print_host_facts.yaml
Comme vous pouvez le voir, les hôtes vm5.nœudkite.com et vm6.nœudkite.com peut accéder au nom_base et db_port faits/variables de l'hôte.
Rassembler le tout : la priorité des faits Ansible
Dans cette section, je vais parler du fait Ansible/priorité variable. Alors, commençons.
Avant de commencer, nettoyons le fichier d'inventaire.
Ouvrez le l'hôte fichier d'inventaire avec la commande suivante :
$ nano hôtes
Supprimer la section marquée du fichier d'inventaire.
Voici à quoi devrait ressembler votre fichier d'inventaire à ce stade.
Maintenant, ajoutez la ligne marquée dans votre fichier d'inventaire. Ces lignes ajoutent les faits/variables globaux fact_scope et Port.
Ensuite, ajoutez les lignes marquées dans votre fichier d'inventaire. Ces lignes ajoutent le fact_scope et Port faits/variables pour les hôtes dans le base de données grouper.
Enfin, ajoutez le fact_scope et Port faits/variables de l'hôte pour le vm3.nœudkite.com et vm4.nœudkite.com hôtes, comme indiqué dans la capture d'écran ci-dessous.
Une fois que vous avez terminé, appuyez sur
Pour imprimer la valeur des faits/variables globaux, de groupe et d'hôte, créez un nouveau playbook fact_precendence.yaml dans le cahiers/ répertoire comme suit :
$ nano playbooks/fact_precedence.yaml
Tapez les lignes suivantes dans le fact_precedence.yaml déposer.
- hôtes : tousutilisateur : ansible
Tâches:
- nom : imprimer tous les faits
déboguer:
msg : « Portée des faits : fact_scope Port : port »
Une fois que vous avez terminé, appuyez sur
Pour imprimer les faits/variables globaux, de groupe et d'hôte, exécutez la commande fact_precedence.yaml livre de jeu comme suit :
$ ansible-playbook playbooks/fact_precedence.yaml
Comme vous pouvez le voir, les faits/variables globaux, de groupe et d'hôte sont imprimés.
Notez que les faits/variables de groupe ont remplacé les faits/variables globaux (1). Notez également que les faits/variables hôtes ont remplacé à la fois les faits/variables de groupe et globaux (2).
La priorité des faits/variables d'Ansible est la suivante :
Fait d'hôte > Fait de groupe > Fait globalConclusion:
Après avoir lu cet article, vous devriez être en mesure de travailler confortablement avec les faits/variables globaux, de groupe et d'hôte d'Ansible. Rappelez-vous la priorité des faits personnalisés Ansible. Cela vous aidera à déboguer plus facilement vos playbooks Ansible.