Heim > System-Tutorial > LINUX > Einführung in Ansible Dynamic Inventory

Einführung in Ansible Dynamic Inventory

王林
Freigeben: 2024-08-24 10:44:02
Original
923 Leute haben es durchsucht

Ansible Inventory besteht eigentlich aus zwei Teilen: statisches Inventar und dynamisches Inventar. Statisches Inventar bezieht sich auf die in der Datei /etc/ansible/hosts angegebenen Hosts und Gruppen. Dynamisches Inventar bezieht sich auf das Abrufen der Hostliste über externe Skripte und das Befolgen der Anforderungen ansible Das an den Befehl ansilbe zurückgegebene Format. Dieser Teil kombiniert im Allgemeinen das CMDB-Asset-Management-System, das Zabbix-Überwachungssystem, das Crobble-Installationssystem, die Cloud-Computing-Plattform usw., um Host-Informationen zu erhalten. Da Host-Ressourcen im Allgemeinen dynamisch zunehmen oder abnehmen, werden diese Systeme im Allgemeinen intelligent aktualisiert. Wir können die Hostliste über die von diesen Tools bereitgestellte API zurückgeben oder auf Bibliotheksabfragen zugreifen.

1. Das einfachste Beispiel

Da Ansible beim Akzeptieren von Skripten zum dynamischen Abrufen von Hostinformationen das JSON-Format unterstützt, werde ich sie hier nicht von anderen Systemen übernehmen und einen Teil der Hostinformationen im JSON-Format über einen Code ausdrucken:

#!/usr/bin/env python
# coding=utf-8
import json
host1ip = ['10.212.52.252','10.212.52.14']
host2ip = ['10.212.52.16']
group = 'test1'
group2 = 'test2'
hostdata = {group:{"hosts":host1ip},group2:{"hosts":host2ip}}
print json.dumps(hostdata,indent=4)
Nach dem Login kopieren

Hinweis:

1. Der Hostteil muss im Listenformat vorliegen

2. In der Hostdatenzeile kann der Teil „hosts“ weggelassen werden, aber wenn er verwendet wird, muss er „hosts“ sein und darf keine anderen Zeichenfolgen wie „hostlist“ sein.

Nachdem Sie

weggelassen haben, können Sie es so schreiben:

hostdata = {group:host1ip,group2:host2ip}
Nach dem Login kopieren

Das Ergebnis der direkten Ausführung dieses Codes ist wie folgt:

[root@361way.com ~]# python twogroup.py
{
"test1": {
"hosts": [
"10.212.52.252",
"10.212.52.14"
]
},
"test2": {
"hosts": [
"10.212.52.16"
]
}
}
Nach dem Login kopieren

Zwei Hostgruppen sind oben definiert. Die Gruppe test1 enthält die Hosts 10.212.52.252 und 10.212.52.14, und die Gruppe test2 enthält den Host 10.212.52.16. ansible kann über die folgenden Methoden aufgerufen werden:

[root@361way.com ~]# ansible -i twogroup.py test1 -m command -a 'uptime' -k
SSH password:
10.212.52.252 | success | rc=0 >>
23:01pm up 24 days 8:24, 2 users, load average: 0.21, 0.35, 0.39
10.212.52.14 | success | rc=0 >>
23:08pm up 332 days 5:23, 2 users, load average: 0.00, 0.01, 0.05
[root@361way.com ~]# ansible -i twogroup.py test2 -m command -a 'uptime' -k
SSH password:
10.212.52.16 | success | rc=0 >>
23:09pm up 332 days 6:00, 2 users, load average: 0.08, 0.06, 0.05
Nach dem Login kopieren
2. Komplexes Beispiel

Im Beispiel einer statischen Host-Konfigurationsdatei gibt es Gruppenvariablen (vars), auch zwischen Gruppen, wie unten gezeigt:

Ansible Dynamic Inventory 介绍

Wenn Sie den obigen Teil wünschen, erhalten Sie die Implementierung über das Skript. Das nach der Implementierung zurückgegebene JSON-Format sollte wie folgt aussehen:

Ansible Dynamic Inventory 介绍

Komplexe Rückgabeformate wie die oben genannten werden im Allgemeinen nicht in Ad-hoc-Umgebungen verwendet. Die meisten davon werden in Ansible-Playbooks verwendet. Dies liegt daran, dass die Playbook-Datei manchmal die Übergabe von Vars-Parametern beinhaltet.

3. Erhalten Sie Host-Beispiele von Drittanbieterplattformen

Dies wurde am Anfang dieses Artikels erwähnt. Wir haben Beispiele von Plattformen wie cobbler und cmdb erhalten. Da der Initiator (Autor) von Ansible auch der Entwickler der Cobbler-Software ist, gibt uns das offizielle Dokument ein Beispiel für Cobbler und ein Beispiel für den Erhalt von Hostinformationen von AWS. Wie folgt:

Holen Sie sich den Host-Informationscode für Cobbler

Holen Sie sich den Host-Informationscode in der AWS Cloud

Zum Abrufen von Hostinformationen von AWS und zum Einfügen in die Datenbank habe ich bereits ein entsprechendes Kapitel geschrieben. Weitere Informationen finden Sie auch in meinem vorherigen Blogbeitrag – AWS Host Asset Management (dieser Artikel ist auch in reinem Python implementiert). ).

Holen Sie sich Host-Informationen über die Zabbix-API. Ich habe auch eine Zabbix-Zusammenfassung geschrieben (8). Wenn Sie Host-Listeninformationen über die Zabbix-Plattform erhalten möchten, können Sie sich auch darauf beziehen.

4. Andere

1. Das nach dem Parameter ansible -i aufgerufene Skript ist nicht unbedingt eine py-Datei, es kann auch das Ausgabeergebnis anderer Skripte sein:

[root@361way.com yaml]# ansible -i group.sh test1 -m command -a 'uptime' -k
SSH password:
10.212.52.16 | success | rc=0 >>
00:18am up 332 days 7:10, 2 users, load average: 0.00, 0.01, 0.05
10.212.52.14 | success | rc=0 >>
00:17am up 332 days 6:32, 2 users, load average: 0.01, 0.03, 0.05
10.212.52.252 | success | rc=0 >>
00:11am up 24 days 9:33, 2 users, load average: 0.49, 0.42, 0.41
[root@localhost yaml]# cat group.sh
#!/bin/bash
groups='''
{
"test1": {
"hosts": [
"10.212.52.252",
"10.212.52.14",
"10.212.52.16"
]
}
}
'''
echo $groups
Nach dem Login kopieren

2. Das durch den Parameter -i angegebene Skript muss über eine ausführbare Berechtigung verfügen, andernfalls wird ein Fehler wie folgt gemeldet:

[root@361way.com yaml]# ansible -i hostjson.py AA -a 'uptime'
ERROR: The file hostjson.py looks like it should be an executable inventory script, but is not 
marked executable. Perhaps you want to correct this with `chmod +x hostjson.py`?
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in Ansible Dynamic Inventory. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:linuxprobe.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage