Recherche de site Web

Comment utiliser les inventaires statiques et dynamiques dans Ansible - Partie 4


Dans cette Partie 4 de la série Ansible, nous expliquerons comment utiliser l'inventaire statique et dynamique pour définir des groupes d'hôtes dans Ansible.

Dans un Ansible, les hôtes ou serveurs gérés qui sont contrôlés par le nœud de contrôle Ansible sont définis dans un fichier d'inventaire d'hôte comme expliqué dans. Un hôte Le fichier d'inventaire est un fichier texte composé de noms d'hôte ou d'adresses IP d'hôtes gérés ou de serveurs distants.

Les hôtes gérés peuvent être répertoriés sous forme d'entrées individuelles ou classés sous un nom de groupe, comme nous le verrons plus tard. Dans Ansible, il existe deux types de fichiers d'inventaire : Statique et Dynamique.

Examinons chacun d’entre eux et voyons comment nous pouvons les gérer. À présent, nous supposons que vous avez déjà installé Ansible sur votre nœud de contrôle et configuré une connexion SSH sans mot de passe à vos hôtes gérés.

Fichier d'inventaire d'hôte statique

Dans Ansible, un fichier d'inventaire statique est un fichier texte brut qui contient une liste d'hôtes gérés déclarés sous un groupe d'hôtes à l'aide de noms d'hôtes ou d'adresses IP.

Un nom de groupe d'hôtes est placé entre crochets, c'est-à-dire [nom du groupe]. Les entrées de l'hôte géré sont ensuite répertoriées sous le nom du groupe, chacune sur sa propre ligne. Comme indiqué précédemment, les hôtes sont répertoriés à l'aide de noms d'hôtes ou d'adresses IP.

[group name]

Host A ip_address 
Host B ip_address
Host c ip_address

À des fins d’illustration, nous créerons un fichier d’inventaire statique.

mkdir test_lab && cd test_lab
vim hosts
[webservers]
173.82.115.165

[database_servers]
173.82.220.239

[datacenter:children]
webservers
database_servers

Enregistrez le fichier et quittez.

Comme vous pouvez le voir dans le fichier d'inventaire ci-dessus, nous avons créé 2 groupes d'hôtes : webservers et database_servers. De plus, nous avons créé un groupe supplémentaire appelé datacenter qui comprend un groupe de groupes d'hôtes désigné par le suffixe ': children' comme vu ci-dessus.

Ansible permet également de placer des groupes d'hôtes sous un nom de groupe. Dans le fichier d'inventaire ci-dessus, les groupes webservers et database_servers ont été placés sous le datacenter.

REMARQUE : Il n'est pas obligatoire de placer des hôtes gérés dans un groupe d'hôtes. Vous pouvez simplement les lister en utilisant leur nom d'hôte ou leur adresse IP par exemple.

173.82.202.239
172.82.115.165
load_balancer.pnl.com

Utilisons maintenant quelques commandes Ansible pour référencer le fichier d'inventaire de l'hôte. La syntaxe de base pour la gestion des stocks est la suivante.

ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Par exemple,

ansible all -i /root/test_labs/hosts --list-hosts

Vous pouvez également utiliser le caractère générique * pour remplacer l'argument 'all'.

ansible * -i /root/test_labs/hosts --list-hosts

Pour répertorier les hôtes dans un groupe, spécifiez le groupe d'hôtes à la place du modèle d'hôte.

ansible webservers -i /root/test_labs/hosts --list-hosts

Fichier d'inventaire d'hôte dynamique

Dans une configuration, en particulier une configuration cloud telle que AWS, où le fichier d'inventaire ne cesse de changer à mesure que vous ajoutez ou mettez hors service des serveurs, garder un œil sur les hôtes définis dans le fichier d'inventaire devient un véritable défi. Il devient gênant de revenir au fichier hôte et de mettre à jour la liste des hôtes avec leurs adresses IP.

Et c’est là qu’un inventaire dynamique entre en jeu. Alors, qu’est-ce qu’un inventaire dynamique ? Un inventaire dynamique est un script écrit en Python, PHP ou tout autre langage de programmation. Cela s'avère pratique dans les environnements cloud tels qu'AWS où les adresses IP changent une fois qu'un serveur virtuel est arrêté et redémarré.

Ansible a déjà développé des scripts d'inventaire pour les plateformes de cloud public telles que Google Compute Engine, l'instance Amazon EC2, OpenStack, RackSpace, cobbler, entre autres.

Quels sont les avantages d’un inventaire dynamique par rapport à un inventaire statique ?
  • Les inventaires dynamiques réussissent parfaitement à réduire les erreurs humaines car les informations sont collectées à l'aide de scripts.
  • Un minimum d’effort est requis dans la gestion des stocks.

Vous pouvez rédiger votre propre inventaire dynamique personnalisé dans le langage de programmation de votre choix. L'inventaire doit renvoyer un format au format JSON lorsque les options appropriées sont transmises.

Utiliser un script d'inventaire dynamique existant

Un script utilisé pour créer un inventaire dynamique doit être rendu exécutable pour qu'Ansible puisse l'utiliser.

Pour récupérer des informations sur les hôtes dans un script d'inventaire dynamique, exécutez simplement.

./script --list 

Comme indiqué précédemment, la sortie doit être au format JSON au format ci-dessous.

Un dictionnaire comprenant des groupes (c'est-à-dire des serveurs Web, des serveurs de base de données)
  • Une liste des hôtes gérés par groupe
  • Un dictionnaire de variables
Métadictionnaire
  • Hôtes et variables d'hôtes
Exemple de sortie
{
  "webservers": {
    "hosts": [
      "webserver1.example.com",
      "webserver2.example.com"
    ],
    "vars": {}
  },
  "database_servers": {
    "hosts": [
      "mysql_db1",
      "mysql_db2"
    ],
    "vars": {}
  },
  "_meta": {
    "hostvars": {
      "mysql_db2": {},
      "webserver2.example.com": {},
      "webserver1.example.com": {}, 
      "mysql_db1": {}
    }
  }
}
Conclusion

Dans cet article, nous avons montré comment créer des inventaires statiques et dynamiques. En résumé, un fichier d'inventaire statique est un fichier texte brut contenant une liste d'hôtes gérés ou de nœuds distants dont les numéros et adresses IP restent assez constants.

D'un autre côté, un fichier hôte dynamique ne cesse de changer à mesure que vous ajoutez de nouveaux hôtes ou que vous mettez hors service d'anciens. Les adresses IP des hôtes sont également dynamiques lorsque vous arrêtez et démarrez de nouveaux systèmes hôtes. Nous espérons que vous avez trouvé ce tutoriel informatif.