Les environnements informatiques deviennent de plus en plus complexes. Dans ces conditions, il est crucial pour un systĂšme d'automatisation informatique de disposer d'informations actualisĂ©es sur les nĆuds prĂ©sents dans le rĂ©seau et devant ĂȘtre traitĂ©s. Dans la Red Hat Ansible Automation Platform, cette question est abordĂ©e grĂące Ă ce que l'on appelle les inventaires () â des listes de nĆuds gĂ©rĂ©s.

Dans sa forme la plus simple, un inventaire se présente sous la forme d'un fichier statique. C'est l'option idéale lorsque vous commencez à travailler avec Ansible, mais au fur et à mesure que l'automatisation s'accroßt, cela devient insuffisant.
Et voici pourquoi :
- Comment mettre Ă jour et maintenir Ă jour une liste complĂšte des nĆuds contrĂŽlĂ©s lorsque quelque chose change constamment, lorsque les charges de travail â et donc les nĆuds sur lesquels elles s'exĂ©cutent â apparaissent et disparaissent ?
- Comment classer les composants de l'infrastructure informatique afin de sĂ©lectionner prĂ©cisĂ©ment les nĆuds pour appliquer un type d'automatisation ou un autre ?
Les rĂ©ponses Ă ces deux questions sont fournies par l'inventaire dynamique () â un script ou un plugin qui recherche les nĆuds devant ĂȘtre automatisĂ©s en se rĂ©fĂ©rant Ă la source de vĂ©ritĂ©. De plus, l'inventaire dynamique classe automatiquement les nĆuds par groupes, afin que vous puissiez sĂ©lectionner plus prĂ©cisĂ©ment les systĂšmes cibles pour l'exĂ©cution de l'automatisation Ansible.
permettent Ă l'utilisateur d'Ansible d'accĂ©der Ă des plateformes externes pour rechercher dynamiquement les nĆuds cibles et d'utiliser ces plateformes comme source de vĂ©ritĂ© lors de la crĂ©ation de l'inventaire. La liste standard des sources dans Ansible comprend les plateformes cloud AWS EC2, Google GCP et Microsoft Azure, et il existe Ă©galement de nombreux autres plugins d'inventaire pour Ansible.
Ansible Tower est livrĂ© avec une sĂ©rie de , qui fonctionnent directement « hors de la boĂźte » et offrent, en plus des plateformes cloud mentionnĂ©es ci-dessus, une intĂ©gration avec VMware vCenter, Red Hat OpenStack Platform et Red Hat Satellite. Pour ces plugins, il suffit de fournir des identifiants pour se connecter Ă la plateforme cible, aprĂšs quoi ils peuvent ĂȘtre utilisĂ©s comme source de donnĂ©es d'inventaire dans Ansible Tower.
En plus des plugins standards fournis avec Ansible Tower, il existe Ă©galement d'autres plugins d'inventaire soutenus par la communautĂ© Ansible. Avec le passage aux , ces plugins ont commencĂ© Ă ĂȘtre inclus dans les collections correspondantes.
Dans ce post, nous allons examiner le fonctionnement du plugin d'inventaire pour ServiceNow, une plateforme populaire de gestion des services informatiques, oĂč les clients conservent souvent des informations sur tous leurs appareils dans la CMDB. De plus, la CMDB peut contenir un contexte utile pour l'automatisation, comme des informations sur les propriĂ©taires de serveurs, les niveaux de service (production/non-production), les mises Ă jour installĂ©es et les fenĂȘtres de maintenance. Le plugin d'inventaire Ansible peut travailler avec la CMDB ServiceNow et fait partie de la collection. sur le portail .
Le dépÎt Git
Pour utiliser le plugin d'inventaire de la collection dans Ansible Tower, il doit ĂȘtre dĂ©fini comme source de projet. Dans Ansible Tower, un projet est une intĂ©gration avec un systĂšme de gestion de versions, comme un dĂ©pĂŽt git, qui peut ĂȘtre utilisĂ© pour synchroniser non seulement les playbooks d'automatisation, mais aussi les variables et les listes d'inventaire.
Notre dépÎt est en réalité trÚs simple :
âââ collections
â âââ requirements.yml
âââ servicenow.yml
Le fichier servicenow.yml contient les dĂ©tails pour le plugin d'inventaire. Dans notre cas, nous spĂ©cifions simplement la table dans la CMDB ServiceNow que nous souhaitons utiliser. Nous dĂ©finissons Ă©galement les champs qui seront ajoutĂ©s en tant que variables de nĆud, ainsi que certaines informations sur les groupes que nous souhaitons crĂ©er.
$ cat servicenow.yml
plugin: servicenow.servicenow.now
table: cmdb_ci_linux_server
fields: [ip_address,fqdn,host_name,sys_class_name,name,os]
keyed_groups:
- key: sn_sys_class_name | lower
prefix: ''
separator: ''
- key: sn_os | lower
prefix: ''
separator: ''
Notez qu'il n'est pas spécifié ici quelle instance de ServiceNow nous allons connecter, et aucun identifiant n'est fourni pour la connexion. Tout cela sera configuré plus tard dans Ansible Tower.
est nĂ©cessaire pour qu'Ansible Tower puisse tĂ©lĂ©charger la collection requise et obtenir ainsi le plugin d'inventaire nĂ©cessaire. Sinon, il faudrait installer et maintenir manuellement cette collection sur tous nos nĆuds Ansible Tower.
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
AprÚs avoir envoyé cette configuration au systÚme de contrÎle de version, il est possible de créer un projet dans Ansible Tower, faisant référence au dépÎt correspondant. Dans l'exemple ci-dessous, Ansible Tower se connecte à notre dépÎt sur GitHub. Notez l'URL SCM : elle permet de spécifier un compte pour se connecter à un dépÎt privé, ainsi que de définir une branche, un tag ou un commit spécifique à extraire.

Créons des credentials pour ServiceNow
Comme déjà mentionné, la configuration dans notre dépÎt ne contient pas de credentials pour se connecter à ServiceNow et ne précise pas l'instance de ServiceNow avec laquelle nous allons interagir. Par conséquent, pour définir ces données, nous allons créer des credentials dans Ansible Tower. Selon , il existe un certain nombre de variables d'environnement que nous utiliserons pour définir les paramÚtres de connexion, comme ceci :
= username
Le compte utilisateur ServiceNow, il doit avoir les droits pour lire cmdb_ci_server (par défaut), ou la table spécifiée par SN_TABLE
set_via:
env:
- name: SN_USERNAME
Dans ce cas, si la variable d'environnement SN_USERNAME est définie, le plugin d'inventaire l'utilisera comme compte pour se connecter à ServiceNow.
Nous devons également définir les variables SN_INSTANCE et SN_PASSWORD.
Cependant, dans Ansible Tower, il n'existe pas de credentials de ce type, oĂč nous pourrions spĂ©cifier ces donnĂ©es pour ServiceNow. Cependant, Ansible Tower nous permet de dĂ©finir , vous pouvez en lire plus dans l'article .
Dans notre cas, la configuration d'entrée pour les credentials personnalisés pour ServiceNow est la suivante :
fields:
- id: SN_USERNAME
type: string
label: Nom d'utilisateur
- id: SN_PASSWORD
type: string
label: Mot de passe
secret: true
- id: SN_INSTANCE
type: string
label: Instance Snow
required:
- SN_USERNAME
- SN_PASSWORD
- SN_INSTANCE
Ces credentials seront exposĂ©s comme des variables d'environnement avec le mĂȘme nom. Cela est dĂ©crit dans la configuration de l'injecteur :
env:
SN_INSTANCE: '{{ SN_INSTANCE }}'
SN_PASSWORD: '{{ SN_PASSWORD }}'
SN_USERNAME: '{{ SN_USERNAME }}'
Donc, nous avons défini le type de credential dont nous avons besoin, il est maintenant possible d'ajouter le compte ServiceNow et de définir l'instance, le nom d'utilisateur et le mot de passe, comme ceci :

Créons un inventaire
Nous sommes donc prĂȘts Ă crĂ©er un inventaire dans Ansible Tower. Appelons-le ServiceNow :

AprÚs avoir créé un inventaire, nous pouvons y attacher une source de données. Ici, nous spécifions le projet que nous avons créé précédemment et entrons le chemin vers notre fichier d'inventaire YAML dans le dépÎt du systÚme de gestion de version, dans notre cas servicenow.yml à la racine du projet. De plus, il faut lier le compte ServiceNow.

Pour vĂ©rifier comment tout fonctionne, essayons de nous synchroniser avec la source de donnĂ©es en cliquant sur le bouton « Sync all ». Si tout est correctement configurĂ©, les nĆuds devraient ĂȘtre importĂ©s dans notre inventaire :

Notez que les groupes nécessaires ont également été créés.
Conclusion
Dans cet article, nous avons examinĂ© comment utiliser les plugins d'inventaire d'Ansible Tower provenant de collections en prenant comme exemple le plugin ServiceNow. Nous avons Ă©galement correctement spĂ©cifiĂ© les informations d'identification pour nous connecter Ă notre instance ServiceNow. La liaison du plugin d'inventaire provenant du projet fonctionne non seulement avec des plugins tiers ou personnalisĂ©s, mais elle peut Ă©galement ĂȘtre appliquĂ©e pour modifier le fonctionnement de certains plugins d'inventaire standard. GrĂące Ă cela, Ansible Automation Platform s'intĂšgre facilement et sans couture avec des outils existants lors de l'automatisation des environnements informatiques devenant de plus en plus complexes.
Vous pouvez trouver des informations supplémentaires sur les sujets abordés dans cet article, ainsi que sur d'autres aspects de l'utilisation d'Ansible ici :
- Blog sur .
- .
- Liste des collections Red Hat prises en charge sur le site Automation Hub ().
- .
*Red Hat ne garantit pas l'exactitude du code présenté ici. Tous les matériaux sont fournis sans support, sauf indication contraire clairement énoncée.
Source : habr.com
