Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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 (inventory) – des listes de nƓuds gĂ©rĂ©s.

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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 :

  1. 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 ?
  2. 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 (dynamic inventory) – 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.

Les plugins d'inventaire 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 plugins d'inventaire, 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 Red Hat Ansible Content Collections , 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. servicenow sur le portail galaxy.ansible.com.

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.

Le fichier collections/requirements.yml 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.

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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 la documentation du plugin d'inventaire ServiceNow, 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 des types de credentials personnalisĂ©s, vous pouvez en lire plus dans l'article "Ansible Tower Feature Spotlight: Custom Credentials".

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 :

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

Créons un inventaire

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

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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.

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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 :

Utilisation des plugins d'inventaire des Collections de contenu Ansible dans Ansible Tower

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 :

*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

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster