Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

IT-omgevingen worden steeds complexer. Onder deze omstandigheden is het van cruciaal belang dat het IT-automatiseringssysteem over actuele informatie beschikt over de knooppunten die aanwezig zijn in het netwerk en die worden verwerkt. In het Red Hat Ansible Automation Platform wordt dit probleem opgelost via de zogenaamde inventory (inventaris) – lijsten met beheerde knooppunten.

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

In de eenvoudigste vorm is inventaris een statisch bestand. Dit is ideaal als je met Ansible gaat werken, maar naarmate de automatisering toeneemt, wordt dit onvoldoende.

En hier is waarom:

  1. Hoe update en onderhoud je een volledige lijst met bewaakte knooppunten wanneer zaken voortdurend veranderen, wanneer werklasten (en vervolgens de knooppunten waarop ze draaien) komen en gaan?
  2. Hoe kunnen de componenten van de IT-infrastructuur worden geclassificeerd om specifiek knooppunten te selecteren voor het toepassen van een bepaalde automatisering?

Dynamische inventarisatie biedt antwoorden op beide vragen (dynamische inventaris) – een script of plug-in die zoekt naar knooppunten die moeten worden geautomatiseerd, verwijzend naar de bron van de waarheid. Bovendien classificeert de dynamische inventaris knooppunten automatisch in groepen, zodat u nauwkeuriger doelsystemen kunt selecteren voor het uitvoeren van specifieke Ansible-automatisering.

Voorraadplug-ins geef de Ansible-gebruiker de mogelijkheid om toegang te krijgen tot externe platforms om dynamisch naar doelknooppunten te zoeken en deze platforms te gebruiken als een bron van waarheid bij het maken van een inventaris. De standaardlijst met bronnen in Ansible omvat cloudplatforms AWS EC2, Google GCP en Microsoft Azure, en er zijn ook veel andere inventarisplug-ins voor Ansible.

Ansible Tower wordt geleverd met een aantal inventaris plug-ins, die direct uit de doos werken en, naast de hierboven genoemde cloudplatforms, integratie bieden met VMware vCenter, Red Hat OpenStack Platform en Red Hat Satellite. Voor deze plug-ins hoeft u alleen maar inloggegevens op te geven om verbinding te maken met het doelplatform, waarna ze kunnen worden gebruikt als bron van inventarisgegevens in Ansible Tower.

Naast de standaard plug-ins die bij Ansible Tower worden geleverd, worden er nog andere inventarisplug-ins ondersteund door de Ansible-gemeenschap. Met de overgang naar Red Hat Ansible-inhoudscollecties deze plug-ins werden opgenomen in de overeenkomstige collecties.

In dit bericht nemen we een voorbeeld van het werken met de inventarisplug-in voor ServiceNow, een populair IT-servicebeheerplatform waarin klanten vaak informatie over al hun apparaten opslaan in de CMDB. Bovendien kan de CMDB context bevatten die nuttig is voor automatisering, zoals informatie over servereigenaren, serviceniveaus (productie/niet-productie), geïnstalleerde updates en onderhoudsvensters. De Ansible inventarisplug-in kan werken met ServiceNow CMDB en maakt deel uit van de collectie service nu op de portal galaxy.ansible.com.

Git-opslagplaats

Om een ​​inventarisplug-in uit een collectie in Ansible Tower te gebruiken, moet deze als projectbron worden ingesteld. In Ansible Tower is een project een integratie met een soort versiebeheersysteem, zoals een git-repository, dat kan worden gebruikt om niet alleen automatiseringsplaybooks te synchroniseren, maar ook variabelen en inventarislijsten.

Onze repository is eigenlijk heel eenvoudig:

├── collections
│   └── requirements.yml
└── servicenow.yml

Het servicenow.yml-bestand bevat details voor de plug-ininventaris. In ons geval specificeren we eenvoudigweg de tabel in de ServiceNow CMDB die we willen gebruiken. We stellen ook de velden in die worden toegevoegd als knooppuntvariabelen, plus bepaalde informatie over de groepen die we willen maken.

$ 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: ''

Houd er rekening mee dat dit niet de ServiceNow-instantie specificeert waarmee we op welke manier dan ook verbinding zullen maken, en dat er geen inloggegevens voor verbinding worden gespecificeerd. We zullen dit allemaal later configureren in Ansible Tower.

Bestandsverzamelingen/vereisten.yml nodig zodat Ansible Tower de vereiste collectie kan downloaden en daarmee de vereiste inventarisplug-in kan verkrijgen. Anders zouden we deze verzameling handmatig op al onze Ansible Tower-knooppunten moeten installeren en onderhouden.

$ cat collections/requirements.yml
---
collections:

- name: servicenow.servicenow

Zodra we deze configuratie naar versiebeheer hebben gepusht, kunnen we een project in Ansible Tower maken dat verwijst naar de overeenkomstige repository. Het onderstaande voorbeeld koppelt Ansible Tower aan onze github-repository. Let op de SCM-URL: hiermee kunt u een account registreren om verbinding te maken met een privérepository, en een specifieke branch, tag of commit specificeren om uit te checken.

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

Inloggegevens voor ServiceNow aanmaken

Zoals gezegd bevat de configuratie in onze repository geen inloggegevens om verbinding te maken met ServiceNow en wordt niet gespecificeerd met welke ServiceNow-instantie we zullen communiceren. Om deze gegevens in te stellen, zullen we daarom inloggegevens aanmaken in Ansible Tower. Volgens Documentatie voor de ServiceNow-inventarisplug-in, zijn er een aantal omgevingsvariabelen waarmee we de verbindingsparameters bijvoorbeeld als volgt zullen instellen:

= 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

Als in dit geval de omgevingsvariabele SN_USERNAME is ingesteld, gebruikt de inventarisplug-in deze als account om verbinding te maken met ServiceNow.

We moeten ook de variabelen SN_INSTANCE en SN_PASSWORD instellen.

Er zijn echter geen inloggegevens van dit type in Ansible Tower waar u deze gegevens voor ServiceNow kunt opgeven. Maar Ansible Tower stelt ons in staat te definiëren aangepaste typen inloggegevens, hierover kun je meer lezen in het artikel "Ansible Tower Feature Spotlight: aangepaste inloggegevens".

In ons geval ziet de invoerconfiguratie voor aangepaste inloggegevens voor ServiceNow er als volgt uit:

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

Deze referenties worden weergegeven als omgevingsvariabelen met dezelfde naam. Dit wordt beschreven in de injectorconfiguratie:

env:
  SN_INSTANCE: '{{ SN_INSTANCE }}'
  SN_PASSWORD: '{{ SN_PASSWORD }}'
  SN_USERNAME: '{{ SN_USERNAME }}'

We hebben dus het inloggegevenstype gedefinieerd dat we nodig hebben, nu kunnen we een ServiceNow-account toevoegen en de instantie, gebruikersnaam en wachtwoord als volgt instellen:

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

Wij creëren inventaris

Dus nu zijn we allemaal klaar om een ​​inventaris te maken in Ansible Tower. Laten we het ServiceNow noemen:

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

Nadat we de inventaris hebben gemaakt, kunnen we er een gegevensbron aan koppelen. Hier specificeren we het project dat we eerder hebben gemaakt en voeren we het pad in naar ons YAML-inventarisbestand in de bronbeheerrepository. In ons geval is dit servicenow.yml in de projectroot. Daarnaast moet u uw ServiceNow-account koppelen.

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

Om te controleren hoe alles werkt, proberen we te synchroniseren met de gegevensbron door op de knop "Alles synchroniseren" te klikken. Als alles correct is geconfigureerd, moeten de knooppunten in onze inventaris worden geïmporteerd:

Inventarisplug-ins van Ansible Content Collections gebruiken in Ansible Tower

Houd er rekening mee dat de groepen die we nodig hebben ook zijn aangemaakt.

Conclusie

In dit bericht hebben we gekeken hoe u voorraadplug-ins uit collecties in Ansible Tower kunt gebruiken met de ServiceNow-plug-in als voorbeeld. We hebben ook veilig de inloggegevens geregistreerd om verbinding te maken met onze ServiceNow-instantie. Het koppelen van een inventarisplug-in vanuit een project werkt niet alleen met plug-ins van derden of aangepaste plug-ins, maar kan ook worden gebruikt om de werking van sommige standaardinventarissen te wijzigen. Hierdoor kan Ansible Automation Platform eenvoudig en naadloos worden geïntegreerd met bestaande tools bij het automatiseren van steeds complexere IT-omgevingen.

Meer informatie over de onderwerpen die in dit bericht worden besproken, evenals andere aspecten van het gebruik van Ansible, vindt u hier:

*Red Hat garandeert niet dat de code hierin correct is. Alle materialen worden verstrekt op niet-goedkeuringsbasis, tenzij uitdrukkelijk anders vermeld.

Bron: www.habr.com

Voeg een reactie