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

Dans cette partie 4 de la série Ansible, nous allons expliquer 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ôtes comme expliqué dans. Un fichier d’inventaire d’hôtes est un fichier texte qui se compose de noms d’hôtes 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 en tant qu’entrées individuelles ou catégorisé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.

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

Fichier d’inventaire d’hôtes 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 en utilisant soit des noms d’hôtes, soit des adresses IP.

Un nom de groupe d’hôtes est placé entre crochets, c’est-à-dire . Les entrées d’hôtes gérés sont ensuite listées sous le nom du groupe, chacune sur sa propre ligne. Comme discuté précédemment, les hôtes sont listés en utilisant soit les noms d’hôtes, soit les adresses IP.

Host A ip_address Host B ip_addressHost c ip_address

Pour des raisons d’illustration, nous allons créer un fichier d’inventaire statique.

# mkdir test_lab && cd test_lab# vim hosts
Fichier d’inventaire statique
173.82.115.165173.82.220.239webserversdatabase_servers

Enregistrer le fichier et quitter.

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énoté 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.

NOTE : Il n’est pas obligatoire de placer les hôtes gérés dans un groupe d’hôtes. Vous pouvez simplement les lister en utilisant leurs noms d’hôtes ou leurs adresses IP par exemple.

173.82.202.239172.82.115.165load_balancer.pnl.com

Utilisons maintenant quelques commandes Ansible pour référencer le fichier d’inventaire des hôtes. La syntaxe de base pour la gestion de l’inventaire est comme indiqué.

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

Par exemple,

$ ansible all -i /root/test_labs/hosts --list-hosts
List Ansible Hosts

Alternativement, vous pouvez utiliser le caractère générique * pour remplacer l’argument 'all'.

$ ansible * -i /root/test_labs/hosts --list-hosts
Lister les hôtes Ansible en utilisant les caractères génériques

Pour lister les hôtes dans un groupe, spécifiez le groupe d’hôtes à la place de host-pattern.

$ ansible webservers -i /root/test_labs/hosts --list-hosts
Lister les hôtes Ansible dans un groupe

Fichier d’inventaire d’hôtes dynamique

Dans une configuration – en particulier une configuration en nuage comme AWS où le fichier d’inventaire change constamment à mesure que vous ajoutez ou déclassez des serveurs, garder un œil sur les hôtes définis dans le fichier d’inventaire devient un véritable défi. Il devient peu pratique de retourner au fichier d’hôtes 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. Il s’avère pratique dans les environnements cloud tels que 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, Amazon EC2 instance, OpenStack, RackSpace, cobbler, entre autres.

Quels sont les avantages d’un inventaire dynamique par rapport à un inventaire statique ?
  • Les inventaires dynamiques font un travail parfait pour réduire les erreurs humaines car les informations sont recueillies à l’aide de scripts.
  • Un effort minimal est nécessaire pour gérer les inventaires.

Vous pouvez écrire votre propre inventaire dynamique personnalisé dans un langage de programmation de votre choix. L’inventaire doit retourner un format en JSON lorsque les options appropriées sont passées.

Utiliser un script d’inventaire dynamique existant

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

Pour récupérer des informations sur les hôtes à l’intérieur d’un script d’inventaire dynamique, il suffit d’exécuter.

# ./script --list 

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

Un dictionnaire comprenant des groupes (i.e webservers, database_Servers)
  • Une liste d’hôtes gérés par groupe
  • Un dictionnaire de variables
Méta dictionnaire
  • Hosts et hostvars
Sample Output
Conclusion

Dans cet article, nous avons dé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 les adresses IP restent assez constants.

En revanche, un fichier d’hôtes dynamique ne cesse de changer à mesure que vous ajoutez de nouveaux hôtes ou que vous déclassez les anciens. Les adresses IP des hôtes sont également dynamiques car vous arrêtez et démarrez de nouveaux systèmes hôtes. Nous espérons que vous avez trouvé ce tutoriel instructif.