Dans sa forme la plus simple, un inventaire est un fichier statique. C'est idéal lorsque vous démarrez avec Ansible, mais à mesure que l'automatisation se développe, elle devient insuffisante.
Et c'est pourquoi:
- Comment mettre à jour et maintenir à jour une liste complète des nœuds surveillés lorsque quelque chose change constamment, lorsque les charges de travail - et après elles les nœuds sur lesquels elles s'exécutent - apparaissent et disparaissent?
- -, ?
Les réponses à ces deux questions donnent un inventori dynamique ( l'inventaire dynamique a ) - le script ou le plugin qui cherche à être les unités d'automatisation, se référant à la source de vérité (source de vérité). En outre, l'inventaire dynamique catégorise automatiquement les nœuds en groupes afin que vous puissiez sélectionner plus précisément les systèmes cibles pour effectuer une automatisation Ansible.
Les plugins d'inventaire donnent à l'utilisateur Ansible la possibilité d'accéder à des plates-formes externes pour trouver dynamiquement des nœuds cibles et utiliser ces plates-formes comme source de vérité lors de la formation d'inventaires. La liste des sources Ansible standard comprend les plates-formes cloud AWS EC2, Google GCP et Microsoft Azure, et il existe de nombreux autres plugins d'inventaire pour Ansible.
Ansible Tower est livré avec un certain nombre de plugins d'inventaire qui fonctionnent dès la sortie de la boîte et, en plus des plates-formes cloud ci-dessus, offrent une intégration avec VMware vCenter, Red Hat OpenStack Platform et Red Hat Satellite. Pour ces plugins, il suffit de fournir des informations d'identification pour se connecter à la plate-forme cible, après quoi ils peuvent être utilisés comme source de données d'inventaire dans Ansible Tower.
En plus des plugins standard fournis avec Ansible Tower, il existe d'autres plugins d'inventaire pris en charge par la communauté Ansible. Avec le passage à Red Hat Ansible Content Collections, ces plugins ont été inclus dans leurs collections respectives.
Dans cet article, nous prendrons un exemple de travail avec un plugin d'inventaire pour ServiceNow, une plate-forme de gestion de services informatiques populaire, dans laquelle les clients stockent souvent des informations sur tous leurs appareils dans la CMDB. En outre, 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. Plugin inventaire Ansible peut travailler avec CMDB ServiceNow et fait partie de la ServiceNow collection sur galaxy.ansible.com .
Dépôt Git
Pour utiliser un plugin d'inventaire de la collection dans Ansible Tower, vous devez le définir comme source de projet. Dans Ansible Tower, un projet est une intégration avec une sorte de système de contrôle de version, comme un référentiel git, qui peut être utilisé pour synchroniser non seulement les playbooks d'automatisation, mais également les variables et les listes d'inventaire.
Notre référentiel est en fait très simple:
├── collections
│ └── requirements.yml
└── servicenow.yml
Le fichier servicenow.yml contient les détails de l'inventaire du plugin. Dans notre cas, nous spécifions simplement la table dans le CMDB ServiceNow que nous voulons utiliser. Et 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 voulons 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: ''
Veuillez noter que cela ne spécifie pas l'instance ServiceNow à laquelle nous nous connecterons de quelque manière que ce soit et ne spécifie aucune information d'identification pour la connexion. Nous configurerons tout cela plus tard dans la tour Ansible.
Le fichier collections / requirements.yml est nécessaire pour qu'Ansible Tower puisse télécharger la collection requise et ainsi obtenir le plugin d'inventaire requis. Sinon, nous devrons installer et maintenir manuellement cette collection sur tous nos nœuds Ansible Tower.
$ cat collections/requirements.yml
---
collections:
- name: servicenow.servicenow
Une fois que nous avons poussé cette configuration vers le contrôle de code source, nous pouvons créer un projet dans Ansible Tower qui est lié au référentiel correspondant. L'exemple ci-dessous relie la tour Ansible à notre référentiel github. Faites attention à l'URL SCM: elle vous permet d'enregistrer un compte pour vous connecter à un référentiel privé, ainsi que de spécifier une branche, une balise ou un engagement spécifique à la caisse.
Créer des informations d'identification pour ServiceNow
Comme indiqué, la configuration de notre référentiel ne contient pas d'informations d'identification pour se connecter à ServiceNow et ne complète pas l'instance ServiceNow avec laquelle nous communiquerons. Par conséquent, pour définir ces données, nous créerons des informations d'identification dans Ansible Tower. Selon la documentation du plugin d'inventaire ServiceNow , il existe un certain nombre de variables d'environnement avec lesquelles nous définirons les paramètres de connexion, par exemple, comme ceci:
= username
The ServiceNow user account, it should have rights to read cmdb_ci_server (default), or table specified by 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, Ansible Tower n'a pas d'informations d'identification de ce type, où l'on pourrait spécifier ces données pour ServiceNow. Mais Ansible Tower nous permet de définir des types d'identifiants personnalisés , vous pouvez en savoir plus à ce sujet dans l'article "Ansible Tower Feature Spotlight: Custom Credentials" .
Dans notre cas, la configuration d'entrée pour les informations d'identification personnalisées pour ServiceNow ressemble à ceci:
fields:
- id: SN_USERNAME
type: string
label: Username
- id: SN_PASSWORD
type: string
label: Password
secret: true
- id: SN_INSTANCE
type: string
label: Snow Instance
required:
- SN_USERNAME
- SN_PASSWORD
- SN_INSTANCE
Ces informations d'identification seront exposées en tant que variables d'environnement avec le même nom. Ceci est décrit dans la configuration de l'injecteur:
env:
SN_INSTANCE: '{{ SN_INSTANCE }}'
SN_PASSWORD: '{{ SN_PASSWORD }}'
SN_USERNAME: '{{ SN_USERNAME }}'
Nous avons donc défini le type d'informations d'identification dont nous avons besoin, vous pouvez maintenant ajouter le compte ServiceNow et définir l'instance, le nom d'utilisateur et le mot de passe, comme ceci:
Nous créons un inventaire
Nous sommes donc tous prêts à créer un inventaire dans Ansible Tower. Appelons cela ServiceNow:
Après avoir créé l'inventaire, nous pouvons y attacher une source de données. Ici, nous indiquons le projet que nous avons créé précédemment et entrons le chemin de notre fichier d'inventaire YAML dans le référentiel de contrôle de source, dans notre cas, il s'agit de servicenow.yml à la racine du projet. De plus, le compte ServiceNow doit être lié.
Pour vérifier comment tout fonctionne, essayons de synchroniser avec la source de données en cliquant sur le bouton «Tout synchroniser». Si tout est configuré correctement, les nœuds doivent être importés dans notre inventaire:
Veuillez noter que les groupes dont nous avons besoin ont également été créés.
Conclusion
Dans cet article, nous avons examiné comment utiliser les plugins d'inventaire des collections d'Ansible Tower en utilisant le plugin ServiceNow comme exemple. Nous avons également attribué en toute sécurité des informations d'identification pour vous connecter à notre instance ServiceNow. La liaison d'un plug-in d'inventaire à partir d'un projet fonctionne non seulement avec des plug-ins tiers ou personnalisés, mais peut également être utilisée pour modifier le travail de certains inventaires réguliers. Cela permet à Ansible Automation Platform de s'intégrer de manière transparente et transparente aux outils existants pour automatiser des environnements informatiques de plus en plus complexes.
Trouvez plus d'informations sur les sujets abordés dans cet article, ainsi que sur d'autres aspects de l'utilisation d'Ansible, ici:
- Blog pour l' automatisation à l'aide de ServiceNow Ansible .
- .
- Red Hat Automation Hub (cloud.redhat.com).
- Ansible Automation Platform.
*Red Hat . , .