Vous pouvez définir trois types de faits personnalisés dans ANIBLE.
1) Faits mondiaux: Ces faits sont accessibles à partir de 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) Facts de l'hôte: Ces faits ne sont accessibles que par un hôte particulier.
Dans cet article, je vais vous montrer comment travailler avec des faits personnalisés anibles. Alors, commençons.
Conditions préalables:
Si vous voulez essayer les exemples de cet article,
1) Vous devez faire installer un anible sur votre ordinateur.
2) Vous devez avoir au moins 6 hôtes Linux configurés pour ANSIBLE AUTOMATION.
Il existe de nombreux articles sur Linuxhint dédiés à l'installation de Ansible et à la configuration des hôtes pour ANSIBLE AUTOMATION. Vous pouvez les vérifier si nécessaire.
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 Facts personnalisés / dans ton MAISON répertoire, exécutez la commande suivante:
$ mkdir -pv personnalisé-facts / playbooks, host_vars, group_vars
Maintenant, accédez à la Facts personnalisés / Répertoire comme suit:
$ CD Custom-Fact /
Créer un fichier de configuration anible anable.CFG Dans votre répertoire de projet comme suit:
$ nano anible.CFG
Tapez les lignes suivantes votre anable.CFG déposer.
[Par défaut]Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le anable.CFG fichier de configuration.
Maintenant, créez un fichier d'inventaire ANSIBLE hôtes Dans votre répertoire de projet comme suit:
$ hôtes nano
Tapez les lignes suivantes dans votre hôte fichier d'inventaire.
VM1.nodekite.comUne fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le hôtes fichier d'inventaire.
Pour répertorier tous les hôtes disponibles dans votre fichier d'inventaire, exécutez la commande suivante:
$ anible tout - hôtes de liste
Comme vous pouvez le voir, j'ai six hôtes dans mon fichier d'inventaire.
Pour répertorier les hôtes disponibles dans le la toile Groupe de votre fichier d'inventaire, exécutez la commande suivante:
$ anible web - list-hôtes
Comme vous pouvez le voir, j'ai deux hôtes (VM3.nodekite.com et VM4.nodekite.com) dans le la toile groupe de mon fichier d'inventaire.
Pour répertorier les hôtes disponibles dans le base de données Groupe de votre fichier d'inventaire, exécutez la commande suivante:
$ ANSIBLE BASE DE DATA-HOSTS
Comme vous pouvez le voir, j'ai deux hôtes (VM5.nodekite.com et VM6.nodekite.com) dans le base de données groupe de mon fichier d'inventaire.
Travailler avec des faits mondiaux anibles:
Dans cette section, je vais vous montrer comment définir des faits / variables mondiaux anibles dans votre fichier d'inventaire et y accéder à partir de vos livres de play. Je vais également vous montrer comment définir des faits / variables globaux dans un fichier séparé.
Tout d'abord, ouvrez le hôte Fichier d'inventaire avec la commande suivante:
$ hôtes nano
Maintenant, ajoutez les lignes marquées dans votre hôte fichier d'inventaire. Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer le fichier.
'
Vous ajoutez des faits mondiaux dans le Tous: VARS section. Ici, j'ai ajouté le web_url fait mondial.
Maintenant, créez un nouveau manuel print_global_fact.yaml dans le Playbooks / Répertoire comme suit:
$ nano playbooks / print_global_fact.yamlEnsuite, saisissez les lignes suivantes dans le print_global_fact.yaml déposer.
- hôtes: toutLe but de ce manuel est d'imprimer le web_url fait mondial.
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le print_global_fact.yaml déposer.
Maintenant, exécutez le print_global_fact.yaml Playbook comme suit:
$ anible-playbook playbooks / print_global_fact.yamlComme vous pouvez le voir, tous les hôtes de mon fichier d'inventaire peuvent accéder au fait global web_url.
Vous pouvez également ajouter des faits mondiaux dans un fichier séparé. De cette façon, vous pouvez garder le fichier d'inventaire propre. Voyons comment le faire.
Tout d'abord, supprimons les faits mondiaux du hôte fichier d'inventaire.
$ hôtes nano
Maintenant, supprimez les lignes marquées du fichier d'inventaire et appuyez sur + X, suivie par Y et Pour enregistrer le fichier d'inventaire.
Ensuite, créez un nouveau fichier tous dans le group_vars / Répertoire comme suit:
$ nano group_vars / all
Pour ajouter le fait mondial web_url, Tapez la ligne suivante dans le groupe_vars / tous déposer.
web_url: https: // www.linuxhint.com
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le groupe_vars / tous déposer.
Pour vérifier si vous pouvez accéder au fait mondial web_url, courir le print_global_fact.yaml Playbook à nouveau comme suit:
$ anible-playbook playbooks / print_global_fact.yamlComme vous pouvez le voir, tous les hôtes de mon fichier d'inventaire peuvent accéder au fait global web_url.
Travailler avec des faits de groupe ANSIBLE:
Dans cette section, je vais vous montrer comment définir des faits / variables de groupe anibles dans votre fichier d'inventaire et y accéder à partir de vos livres de jeu anibles. Je vais également vous montrer comment définir les faits / variables de groupe dans un fichier séparé.
Tout d'abord, ouvrez le hôte Fichier d'inventaire avec la commande suivante:
$ hôtes nano
Si vous avez un groupe d'hôtes groupe 1, Ensuite, vous ajoutez des faits / variables de groupe pour ce groupe d'accueil dans un Groupe 1: VARS Section de votre fichier d'inventaire.
[groupe 1]Par exemple, pour ajouter les faits / variables de groupe nom de domaine et database_backends pour le la toile Groupe d'accueil, vous pouvez saisir les lignes marquées dans votre fichier d'inventaire.
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer le fichier d'inventaire.
Pour imprimer et tester si nous pouvons accéder aux faits du groupe, créez un nouveau livre de jeu print_group_facts.yaml dans le Playbooks / Répertoire comme suit:
$ nano playbooks / print_group_facts.yamlTapez les lignes suivantes dans votre print_group_facts.yaml déposer.
- hôtes: webUne fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le print_group_facts.yaml déposer.
Maintenant, exécutez le print_group_facts.yaml Playbook comme suit:
$ anible-playbook playbooks / print_group_facts.yamlComme vous pouvez le voir, les hôtes du la toile le groupe peut accéder au nom de domaine et database_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 hôte Fichier d'inventaire comme suit:
$ NANO FACTS
Retirez les lignes marquées du hôte fichier d'inventaire. Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le hôtes fichier d'inventaire.
Comme nous ajoutons des variables de groupe pour le la toile groupe d'accueil, créez un nouveau fichier la toile (identique au nom du groupe) dans le group_vars / Répertoire comme suit:
$ nano group_vars / web
Pour ajouter les faits du groupe nom de domaine et database_backend pour le la toile groupe hôte, ajoutez les lignes suivantes dans le groupe_vars / web déposer.
domain_name: web.linuxhint.comUne fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le groupe_vars / web déposer.
Pour vérifier si les hôtes dans le la toile Le groupe peut accéder aux faits du groupe, exécuter le print_group_facts.yaml Playbook comme suit:
$ anible-playbook playbooks / print_group_facts.yamlComme vous pouvez le voir, les hôtes du la toile le groupe peut accéder au nom de domaine et database_backend Faits / variables de groupe.
Travailler avec des faits hôtes anibles:
Dans cette section, je vais vous montrer comment définir des faits / variables hôtes anibles dans votre fichier d'inventaire et y accéder à partir de vos livres de jeu anibles. 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 hôte Fichier d'inventaire avec la commande suivante:
$ hôtes nano
Vous pouvez ajouter des faits / variables de l'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 = valeur2Par exemple, vous pouvez ajouter des faits / variables hôtes nom de domaine et database_backend pour les hôtes VM3.nodekite.com et VM4.nodekite.com, comme marqué dans la capture d'écran ci-dessous.
Notez que la valeur du nom de domaine et database_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 + X, suivie par Y et Pour sauver le hôte fichier d'inventaire.
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 également l'accessibilité de ces faits / variables.
Courir le print_group_facts.yaml Playbook comme suit:
$ anible-playbook playbooks / print_group_facts.yamlComme 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 est dans une ligne distincte dans mon fichier d'inventaire, je pourrais facilement ajouter des faits / variables de l'hôte dans mon fichier d'inventaire. Mais, si vous utilisez des gammes pour définir les hôtes dans votre fichier d'inventaire comme marqué dans la capture d'écran ci-dessous, vous ne pouvez pas ajouter des faits / variables hôtes comme ça.
Vous pouvez ajouter des faits / variables hôtes dans un fichier séparé, tout comme vous l'avez fait pour les faits / variables globaux et de groupe.
Pour ajouter des faits / variables hôtes pour le VM5.nodekite.com hôte, créez un nouveau fichier VM5.nodekite.com (identique au nom DNS de l'hôte) dans le host_vars / Répertoire comme suit:
$ nano host_vars / vm5.nodekite.com
Vous pouvez ajouter les faits / variables hôtes db_port et db_name pour l'hôte VM5.nodekite.com avec les lignes suivantes.
DB_PORT: 3306
DB_NAME: Demo1
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le VM5.nodekite.com déposer.
De la même manière, pour ajouter des faits / variables de l'hôte pour l'hôte VM6.nodekite.com, Créer un nouveau fichier VM6.nodekite.com dans le host_vars / Répertoire comme suit:
$ nano host_vars / vm6.nodekite.comVous pouvez ajouter les faits / variables hôtes db_port et db_name pour l'hôte VM6.nodekite.com avec les lignes suivantes.
DB_PORT: 8877Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le VM6.nodekite.com déposer.
Pour imprimer et tester si nous pouvons accéder aux faits / variables de l'hôte, créez un nouveau manuel print_host_facts.yaml dans le Playbooks / Répertoire comme suit:
$ nano playbooks / print_host_facts.yamlMaintenant, saisissez les lignes suivantes dans le print_host_facts.yaml déposer.
- Hôtes: base de donnéesUne fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le print_host_facts.yaml déposer.
Pour vérifier si l'hôte VM5.nodekite.com et VM6.nodekite.com peut accéder aux faits / variables de l'hôte, exécuter le print_host_facts.yaml Playbook comme suit:
$ anible-playbook playbooks / print_host_facts.yamlComme vous pouvez le voir, les hôtes VM5.nodekite.com et VM6.nodekite.com peut accéder au db_name et db_port Faits / variables hôtes.
Mettre tout cela ensemble: les faits ANSIBL
Dans cette section, je vais parler des faits / priorité variable ansible. Alors, commençons.
Avant de commencer, nettoyons le fichier d'inventaire.
Ouvrir le hôte Fichier d'inventaire avec la commande suivante:
$ hôtes nano
Supprimer la section marquée du fichier d'inventaire.
C'est ainsi que votre fichier d'inventaire devrait examiner ce point.
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 groupe.
Enfin, ajoutez le fact_scope et port Faits / variables hôtes pour le VM3.nodekite.com et VM4.nodekite.com hôtes, comme marqué dans la capture d'écran ci-dessous.
Une fois que vous avez terminé, appuyez sur + X suivie par Y et Pour enregistrer le fichier d'inventaire.
Pour imprimer la valeur des faits / variables globaux, groupes et hôtes, créez un nouveau livre de jeu fact_precencence.yaml dans le Playbooks / Répertoire comme suit:
$ nano playbooks / fact_precedence.yamlTapez les lignes suivantes dans le fact_precedence.yaml déposer.
- hôtes: toutUne fois que vous avez terminé, appuyez sur + X suivie par Y et Pour sauver le fact_precedence.yaml déposer.
Pour imprimer les faits / variables globaux, groupes et hôtes, exécutez le fact_precedence.yaml Playbook comme suit:
$ anible-playbook playbooks / fact_precence.yamlComme vous pouvez le voir, les faits / variables globaux, groupes et hôtes sont imprimés.
Notez que les faits / variables du groupe ont remplacé les faits / variables globaux (1). Notez également que les faits / variables hôtes ont remplacé le groupe et les faits / variables globaux (2).
La priorité / variable de la variable d'ANSIBLE est la suivante:
Fait hôte> Fait de groupe> Fait mondialAprès avoir lu cet article, vous devriez être en mesure de travailler confortablement avec des faits / variables mondiaux, groupes et hôtes d'ANSIBL. N'oubliez pas la priorité sur les faits personnalisés anibles. Cela vous aidera à déboguer plus facilement vos manuels anibles.