GNU/Linux >> Tutoriels Linux >  >> Linux

Comment gérer l'inventaire des hôtes statiques et dynamiques Ansible

Comme nous savons que Ansible est l'outil d'automatisation le plus puissant qui peut configurer les hôtes à l'aise. Le principal avantage de l'utilisation d'Ansible en tant qu'outil d'automatisation est que nous n'avons pas besoin d'installer d'agent sur les hôtes. La communication entre le serveur Ansible et ses clients ou hôtes gérés est sans agent, elle fonctionne via le mécanisme ssh.

En termes de terminologie Ansible, le système sur lequel nous installons le logiciel ansible est appelé "nœud de contrôle " et les serveurs qui sont gérés et configurés par le serveur Ansible ou le nœud de contrôle sont appelés "Hôte géré “. Les entrées des hôtes gérés sont stockées dans un fichier d'inventaire d'hôte, c'est un fichier texte sur le nœud de contrôle qui se compose du nom d'hôte géré ou des adresses IP. Dans Ansible, nous pouvons gérer deux types d'inventaire d'hôtes, c'est-à-dire statique et  dynamique .

Dans cet article, nous expliquerons comment gérer l'inventaire des hôtes statiques et dynamiques dans Ansible. Je suppose que le logiciel Ansible est déjà installé sur mon nœud de contrôle. Chaque fois que nous installons un logiciel ansible, un fichier hôte ansible par défaut est créé avec le nom "hosts ” sous le dossier “/etc/ansible " Dans le cas où le logiciel Ansible n'est pas installé sur votre serveur, reportez-vous à ce qui suit

  • Comment installer Ansible (outil d'automatisation) sur CentOS 8/RHEL 8
  • Comment installer l'outil d'automatisation Ansible sur CentOS 7.x

Dans ce tutoriel, j'utiliserai les éléments suivants :

Un nœud de contrôle –   control-node.example.com (192.168.0.10)

Deux hôtes gérés – serveura.exemple.com (192.168.0.20) et serveurb.exemple.com (192.168.0.30)

Inventaire statique des hôtes

Un inventaire d'hôtes statique dans Ansible est un type INI fichier texte, dans lequel chaque section déclare un groupe d'hôtes (groupe d'hôtes). Chaque section commence par un nom de groupe d'hôtes entouré de crochets ([]), puis les entrées d'hôte de chaque hôte géré du groupe sont répertoriées, chacune sur une seule ligne. Les entrées d'hôte peuvent héberger le nom ou les adresses IP des hôtes gérés. Créons un fichier d'inventaire avec le nom "inventaire" sous le dossier "test-lab" dans le répertoire personnel de votre utilisateur.

[[email protected] ~]$ mkdir test-lab
[[email protected] ~]$ cd test-lab/
[[email protected] test-lab]$ vi inventory
control-node.example.com
192.168.0.10

[webserver]
servera.example.com

[dbserver]
serverb.example.com

[datacenter:children]
webserver
dbserver

Enregistrez et quittez le fichier.

Dans le fichier d'inventaire, j'ai créé deux groupes d'hôtes avec le nom webserver et dbserver, à part cela, nous avons créé un autre groupe avec le nom datacenter qui inclut des groupes de groupes d'hôtes. Les inventaires d'hôtes Anisble peuvent inclure des groupes de groupes d'hôtes, ceci est accompli avec ':enfants L'exemple de suffixe est affiché dans l'inventaire créé ci-dessus. De plus, il n'est pas obligatoire de placer l'hôte dans un groupe, nous pouvons simplement placer les hôtes sans mentionner le groupe d'hôtes, tout comme l'entrée "control-node.exmaple.com" dans le fichier d'inventaire

Effectuons quelques opérations de base avec la commande ansible en référençant les hôtes d'inventaire.

Pour utiliser la commande ansible pour la gestion de l'hôte, le chemin du fichier d'inventaire de l'hôte doit être spécifié avec "-i ".

$ ansible {host-pattern}  -i  /  –list-hosts

Exemple : 1 Lister tous les hôtes gérés

Pour répertorier tous les hôtes gérés, spécifiez le mot-clé "all" à la place du modèle d'hôte dans la commande ansible, l'exemple est illustré ci-dessous

[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (4):
    control-node.example.com
    192.168.0.10
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Une autre façon de répertorier tous les hôtes gérés consiste à utiliser le caractère générique "*".

[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts

Exemple :2 Répertorier les hôtes gérés en fonction du groupe d'hôtes.

Spécifiez le nom du groupe d'hôtes à la place du modèle d'hôte

[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$
[[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Exemple :3 Liste des hôtes gérés en fonction d'un modèle d'hôte générique.

Lister tous les hébergeurs qui sont sur le domaine "*.example.com"

[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (3):
    control-node.example.com
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Lister tous les hôtes qui sont sur le réseau "192.168.0.0"

[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    192.168.0.10
[[email protected] test-lab]$

Exemple :4 modèle d'hôte avancé comme l'inclusion et l'exclusion

Outre les caractères génériques, Ansible nous permet de créer des modèles d'hôtes complexes en utilisant une logique d'inclusion et d'exclusion. L'inclusion est accomplie avec le caractère ':' pour séparer les groupes dans le modèle d'hôte pour indiquer une logique OU.

Exemple de modèle d'inclusion d'hôte

[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Exemple de modèle d'intersection d'hôte

':&' représente l'intersection de deux groupes dans le fichier d'inventaire

[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    serverb.example.com
[[email protected] test-lab]$

Exemple de modèle d'exclusion d'hôte

L'exclusion est accomplie en utilisant le caractère ':' en conjonction avec le caractère '!'

[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$

Inventaire dynamique des hôtes

L'inventaire des hôtes dans Ansible peut être généré dynamiquement. Les sources d'informations d'inventaire dynamiques incluent les fournisseurs de cloud public/privé, les informations système de cordonnier, la base de données LDAP ou la CMDB (base de données de gestion de la configuration). Ansible inclut des scripts qui gèrent les informations dynamiques sur les hôtes, les groupes et les variables des fournisseurs les plus courants tels qu'Amazon EC2, Cobbler, Rackspace et OpenStack.

Pour les fournisseurs de cloud, les informations d'authentification et d'accès doivent être définies dans des fichiers auxquels le script peut accéder. Un certain nombre de scripts existants sont disponibles sur le site GitHub d'Ansible à l'adresse https://github.com/ansible/ansible/tree/devel/contrib/inventory. Ces scripts prennent en charge la génération dynamique d'un inventaire basé sur les informations d'hôte disponibles à partir d'un plates-formes grand nombre comme Openstack , AWS , Ovirt , Satellite Red Hat et OpenShift .

Nous pouvons écrire notre propre programme d'inventaire dynamique personnalisé dans n'importe quel langage de programmation et devons le renvoyer au format JSON lorsque les options appropriées sont transmises. Pour qu'Ansible puisse utiliser un script pour récupérer les informations sur les hôtes à partir d'un système d'inventaire externe, ce script doit prendre en charge la –list paramètre, renvoyant des informations sur le groupe d'hôtes et les hôtes similaires au hachage/dictionnaire JSON. L'exemple est montré ci-dessous :

[[email protected] test-lab]$ ./inventoryscript --list
{
  "webservers" :["web1.example.com", "web2.example.com" ],
  "dbservers" :["db1.example.com", "db2.example.com"]
}

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

Remarque :Ansible prend en charge l'utilisation de plusieurs inventaires dans la même exécution. Si la valeur est passée au paramètre '-i' ou la valeur du paramètre d'inventaire dans le fichier /etc/ansible/ansible.cfg . Lorsque les multiples fichiers d'inventaire existent, ils sont examinés par ordre alphabétique. Par conséquent, il est important que le nom d'un fichier suive celui d'un autre fichier dans l'ordre alphabétique si son contenu dépend du contenu d'un autre fichier.


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment gérer les bibliothèques dynamiques et statiques sous Linux

  3. Comment définir une adresse IP statique et configurer le réseau sous Linux

  4. Comment gérer l'expiration et le vieillissement du mot de passe utilisateur sous Linux

  5. Comment configurer une adresse IP statique et dynamique dans Arch Linux

Configurations d'adresses IP statiques et dynamiques :déploiement DHCP

Configurations d'adresses IP statiques et dynamiques pour DHCP

Comment installer et gérer Evillimiter pour contrôler votre réseau Wi-Fi sous Linux

Comment créer et gérer des machines virtuelles dans KVM

Comment détecter et gérer les appareils sous Linux

Comment installer et configurer WordPress avec Ansible