So verwenden Sie statische und dynamische Inventare in Ansible - Teil 4

So verwenden Sie statische und dynamische Inventare in Ansible - Teil 4

In diesem Teil 4 Von Ansible -Serien werden wir erklären, wie man statische und dynamische Inventar verwendet, um Gruppen von Wirten in Ansible zu definieren.

In einem (n Ansible, verwaltete Hosts oder Server, die von der gesteuert werden Ansible Control Node sind in a definiert Host -Inventardatei Wie erklärt. Eine Host -Inventardatei ist eine Textdatei, aus der besteht Hostnamen oder IP -Adressen von verwalteten Hosts oder Remote -Servern.

Verwaltete Hosts kann entweder als einzelne Einträge aufgeführt oder unter einem Gruppennamen kategorisiert werden, wie wir später sehen werden. In Ansible gibt es zwei Arten von Bestandsdateien: Statisch Und Dynamisch.

Schauen wir uns jede davon an und sehen, wie wir sie verwalten können. Inzwischen gehen wir davon aus, dass Sie bereits Ansible in Ihrem Steuerknoten installiert haben und eine passwortlose SSH -Verbindung zu Ihren verwalteten Hosts konfiguriert haben.

Statische Hostinventardatei

In Ansible, Eine statische Bestandsdatei ist eine Klartextdatei, die eine Liste verwalteter Hosts enthält.

Ein Host -Gruppenname ist in quadratischen Klammern i eingeschlossen i.e [Gruppenname]. Die verwalteten Host -Einträge sind später unter dem Gruppennamen aufgeführt, jeweils in seiner eigenen Zeile. Wie bereits erwähnt, werden die Hosts entweder mit Hostnamen oder IP -Adressen aufgeführt.

[Gruppenname] Host A IP_ADDRESS HOST B IP_ADDRESS HOST C IP_ADDRESS 

Für die Illustration werden wir eine statische Inventardatei erstellen.

# Mkdir test_lab && cd test_lab # vim hosts 
Statische Inventardatei
[Webserver] 173.82.115.165 [Database_Servers] 173.82.220.239 [Rechenzentrum: Kinder] Webservers Database_Servers 

Speichern Sie die Datei und beenden Sie.

Wie Sie in der obigen Bestandsdatei sehen können, haben wir zwei Hostgruppen erstellt: Webserver Und Database_Servers. Außerdem haben wir eine zusätzliche Gruppe namens erstellt Rechenzentrum Dazu gehören eine Gruppe von Hostgruppen, die von gekennzeichnet sind, ': Kinder' Suffix, wie oben gesehen.

Mit Ansible können Gruppen von Hosts auch unter einen Gruppennamen platziert werden. In der obigen Bestandsdatei die Webserver Und Database_Servers Gruppen wurden unter die platziert Rechenzentrum.

NOTIZ: Es ist nicht obligatorisch, verwaltete Gastgeber in einer Host -Gruppe zu platzieren. Sie können sie einfach mit ihren Hostnamen oder IP -Adressen auflisten.

173.82.202.239 172.82.115.165 Load_Balancer.pnl.com 

Verwenden wir nun einige Ansible -Befehle, um die Host -Inventardatei zu verweisen. Die grundlegende Syntax für die Bestandsverwaltung ist wie gezeigt.

$ ansible Host-Pattern -i/path/von/inventory/Datei-List-Hosts 

Zum Beispiel,

$ ANSIBLE ALL -i/root/test_labs/hosts -list -hosts 
Listen Sie ansible Hosts auf

Alternativ können Sie den Wildcard -Charakter verwenden * ersetzen 'alle' Streit.

$ ansible * -i/root/test_labs/hosts -list -hosts 
Listen Sie ansible Hosts mit Wildcards auf

Um Hosts in einer Gruppe aufzulisten, geben Sie die Hostgruppe an der Stelle des Host-Musters an.

$ ansible webserver -i/root/test_labs/hosts -list -hosts 
Listen Sie Ansible -Hosts in der Gruppe auf

Dynamische Host -Inventardatei

In einer Konfiguration - insbesondere ein Cloud -Setup wie z AWS Wenn sich die Inventardatei immer wieder ändert. Es wird unpraktisch, zur Hostdatei zurückzukehren und die Liste der Hosts mit ihren IP -Adressen zu aktualisieren.

Und hier ist ein Dynamisches Inventar Kommt zum Spielen. Was ist also ein dynamisches Inventar?? Ein dynamisches Inventar ist ein Skript, das in Python, PHP oder einer anderen Programmiersprache geschrieben wurde. In Cloud -Umgebungen wie AWS ist es nützlich.

Ansible hat bereits Bestandskripte für öffentliche Cloud -Plattformen wie Google Compute Engine, Amazon EC2 -Instanz, OpenStack, Rackspace, Cobbler entwickelt, unter anderem.

Was sind die Vorteile eines dynamischen Inventars gegenüber einem statischen Inventar?
  • Dynamische Inventare leisten perfekte Arbeit, um menschliche Fehler zu reduzieren, da Informationen mit Skripten gesammelt werden.
  • Bei der Verwaltung von Lagerbeständen sind nur minimale Anstrengungen erforderlich.

Sie können Ihr eigenes anpassen dynamisches Inventar in einer Programmiersprache Ihrer Wahl schreiben. Das Inventar sollte ein Format in JSON zurückgeben, wenn die entsprechenden Optionen bestanden werden.

Verwenden Sie ein vorhandenes dynamisches Inventarskript

Ein Skript, mit dem ein dynamisches Inventar erstellt wird, muss ausführbar gemacht werden, damit Ansible es verwenden kann.

Um Informationen über die Hosts innerhalb eines dynamischen Inventarskripts abzurufen, werden einfach ausgeführt.

# ./Skript -List 

Wie bereits erwähnt, sollte die Ausgabe im folgenden Format in JSON sein.

Ein Wörterbuch, das aus Gruppen besteht (i.E Webserver, Database_Servers)
  • Eine Liste der verwalteten Hosts pro Gruppe
  • Ein Wörterbuch von Variablen
Meta -Wörterbuch
  • Gastgeber und Hostvars
Probenausgabe
"Webservers": "Hosts": ["Webserver1.Beispiel.com "," Webserver2.Beispiel.com "]," vars ": ," database_servers ": " hosts ": [" mysql_db1 "," mysql_db2 "]," vars ": ," _meta ": " Hostvars ": " mysql_db2 ": ," Webserver2.Beispiel.com ": ," Webserver1.Beispiel.com ": ," mysql_db1 ":  
Abschluss

In diesem Artikel haben wir gezeigt, wie wir sowohl statische als auch dynamische Inventare erstellen können. Zusammenfassend ist eine statische Inventardatei eine klare Textdatei mit einer Liste verwalteter Hosts oder Remote -Knoten, deren Zahlen und IP -Adressen ziemlich konstant bleiben.

Andererseits ändert sich eine dynamische Host -Datei immer wieder, wenn Sie neue Hosts oder stillgelegte alte hinzufügen. Die IP -Adressen von Hosts sind ebenfalls dynamisch, wenn Sie neue Host -Systeme anhalten und starten. Wir hoffen, dass Sie dieses Tutorial informativ gefunden haben.