GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwalten Sie statisches und dynamisches Host-Inventar von Ansible

Wie wir wissen, ist Ansible ist das leistungsstärkste Automatisierungstool die die Hosts problemlos konfigurieren können. Der Hauptvorteil der Verwendung von Ansible als Automatisierungstool besteht darin, dass wir keinen Agenten auf Hosts installieren müssen. Die Kommunikation zwischen dem Ansible-Server und seinen Clients oder verwalteten Hosts erfolgt ohne Agenten, sie funktioniert über den ssh-Mechanismus.

In Bezug auf die Ansible-Terminologie wird das System, auf dem wir Ansible-Software installieren, als „Control Node“ bezeichnet “ und die Server, die von Ansible Server oder Control Node verwaltet und konfiguriert werden, werden als „Managed Host“ bezeichnet “. Verwaltete Hosts-Einträge werden in einer Host-Bestandsdatei gespeichert, es handelt sich um eine Textdatei auf dem Kontrollknoten, die aus verwalteten Hostnamen oder IP-Adressen besteht. In Ansible können wir Hostinventar von zwei Typen verwalten, d. h. statisch und  dynamisch .

In diesem Artikel werden wir besprechen, wie Sie statisches und dynamisches Host-Inventar in Ansible verwalten. Ich gehe davon aus, dass die Ansible-Software bereits auf meinem Kontrollknoten installiert ist. Immer wenn wir Ansible-Software installieren, wird eine standardmäßige Ansible-Hostdatei mit dem Namen "hosts" erstellt “ unter dem Ordner „/etc/ansible ” Falls die Ansible-Software nicht auf Ihrem Server installiert ist, lesen Sie die folgenden Hinweise

  • So installieren Sie Ansible (Automatisierungstool) unter CentOS 8/RHEL 8
  • So installieren Sie das Ansible Automation-Tool unter CentOS 7.x

In diesem Tutorial werde ich Folgendes verwenden:

Ein Kontrollknoten –   control-node.example.com (192.168.0.10)

Zwei verwaltete Hosts – servera.example.com (192.168.0.20) und serverb.example.com (192.168.0.30)

Statisches Hostinventar

Ein statisches Host-Inventar in Ansible ist ein INI-ähnliches Textdatei, in deren Abschnitt jeweils eine Gruppe von Hosts deklariert wird ( host group). Jeder Abschnitt beginnt mit einem Hostgruppennamen, der in eckige Klammern ([]) eingeschlossen ist, dann werden die Hosteinträge jedes verwalteten Hosts in der Gruppe aufgelistet, jeder in einer einzelnen Zeile. Hosteinträge können Hostnamen oder IP-Adressen von verwalteten Hosts sein. Lassen Sie uns eine Inventardatei mit dem Namen „inventory“ im Ordner „test-lab“ im Home-Verzeichnis Ihres Benutzers erstellen.

[[email protected] ~]$ mkdir test-lab
[[email protected] ~]$ cd test-lab/
[[email protected] test-lab]$ vi inventory
control-node.example.com
192.168.0.10

[webserver]
servera.example.com

[dbserver]
serverb.example.com

[datacenter:children]
webserver
dbserver

Speichern und beenden Sie die Datei.

In der Inventardatei habe ich zwei Hostgruppen mit den Namen webserver und dbserver erstellt, außerdem haben wir eine weitere Gruppe mit dem Namen datacenter erstellt, die Gruppen von Hostgruppen enthält. Anisble-Hostinventare können Gruppen von Hostgruppen enthalten, dies wird mit „:children erreicht Das Beispiel für ein Suffix wird im oben erstellten Inventar gezeigt. Außerdem ist es nicht zwingend erforderlich, Hosts in einer Gruppe zu platzieren. Wir können die Hosts einfach platzieren, ohne die Hostgruppe zu erwähnen, genau wie der Eintrag „control-node.exmaple.com“ in der Bestandsdatei

Lassen Sie uns einige grundlegende Operationen mit dem ansible-Befehl ausführen, indem wir auf Inventory-Hosts verweisen.

Um den Ansible-Befehl für die Hostverwaltung zu verwenden, muss der Pfad der Hostinventardatei mit „-i angegeben werden ”-Option.

$ ansible {host-pattern}  -i  /  –list-hosts

Beispiel:1 Alle verwalteten Hosts auflisten

Um alle verwalteten Hosts aufzulisten, geben Sie im Ansible-Befehl das Schlüsselwort „all“ anstelle des Hostmusters an, das Beispiel ist unten gezeigt

[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (4):
    control-node.example.com
    192.168.0.10
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Eine andere Möglichkeit, alle verwalteten Hosts aufzulisten, ist die Verwendung des Platzhalterzeichens „*“.

[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts

Beispiel:2 Listen Sie die verwalteten Hosts basierend auf der Hostgruppe auf.

Geben Sie den Namen der Hostgruppe anstelle des Hostmusters an

[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$
[[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Beispiel:3 Listen Sie verwaltete Hosts basierend auf einem Wildcard-Hostmuster auf.

Listen Sie alle Hosts auf, die sich auf der Domain „*.example.com“ befinden

[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (3):
    control-node.example.com
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Listen Sie alle Hosts auf, die sich im Netzwerk „192.168.0.0“ befinden

[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    192.168.0.10
[[email protected] test-lab]$

Beispiel:4 Erweitertes Hostmuster wie Inklusion und Exklusion

Abgesehen von Platzhaltern ermöglicht uns Ansible, mithilfe von Einschluss- und Ausschlusslogik komplexe Hostmuster zu erstellen. Die Einbeziehung erfolgt mit dem Zeichen „:“, um Gruppen im Hostmuster zu trennen, um eine ODER-Logik anzuzeigen.

Beispiel für Hosteinschlussmuster

[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Beispiel für Host-Schnittmuster

„:&“ repräsentiert die Schnittmenge zweier Gruppen in der Bestandsdatei

[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    serverb.example.com
[[email protected] test-lab]$

Beispiel für ein Host-Ausschlussmuster

Der Ausschluss erfolgt über das Zeichen „:“ in Verbindung mit dem Zeichen „!“

[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$

Dynamisches Hostinventar

Hostinventar in Ansible kann dynamisch generiert werden. Zu den Quellen für dynamische Inventarinformationen gehören öffentliche/private Cloud-Anbieter, Cobbler-Systeminformationen, LDAP-Datenbank oder CMDB (Configuration Management Database). Ansible enthält Skripte, die dynamische Host-, Gruppen- und Variableninformationen von den gängigsten Anbietern wie Amazon EC2, Cobbler, Rackspace und OpenStack verarbeiten.

Für Cloud-Anbieter sollten Authentifizierungs- und Zugriffsinformationen in Dateien definiert werden, auf die Skripte zugreifen können. Eine Reihe vorhandener Skripte sind auf der GitHub-Site von Ansible unter https://github.com/ansible/ansible/tree/devel/contrib/inventory verfügbar. Diese Skripte unterstützen die dynamische Generierung eines Inventars auf der Grundlage von Hostinformationen, die von a zahlreiche Plattformen wie Openstack , AWS , Ovirt , Red Hat Satellite und OpenShift .

Wir können unser eigenes benutzerdefiniertes dynamisches Inventarprogramm in jeder Programmiersprache schreiben und müssen im JSON-Format zurückkehren, wenn die entsprechenden Optionen bestanden werden. Damit Ansible ein Skript zum Abrufen von Hostinformationen aus einem externen Inventarsystem verwenden kann, muss dieses Skript die –list unterstützen -Parameter, der Hostgruppen- und Hostinformationen ähnlich dem JSON-Hash/Wörterbuch zurückgibt. Beispiel ist unten gezeigt:

[[email protected] test-lab]$ ./inventoryscript --list
{
  "webservers" :["web1.example.com", "web2.example.com" ],
  "dbservers" :["db1.example.com", "db2.example.com"]
}

Ein Skript, das ein dynamisches Inventar erstellt, muss ausführbar sein, damit Ansible es verwenden kann.

Hinweis:Ansible unterstützt die Verwendung mehrerer Inventare im selben Lauf. Wenn entweder der an den ‚-i‘-Parameter übergebene Wert oder der Wert des Inventory-Parameters in der /etc/ansible/ansible.cfg . Wenn mehrere Bestandsdateien vorhanden sind, werden sie in alphabetischer Reihenfolge untersucht. Daher ist es wichtig, dass der Name einer Datei dem einer anderen Datei in alphabetischer Reihenfolge folgt, wenn ihr Inhalt vom Inhalt einer anderen Datei abhängt.


Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. Umgang mit dynamischen und statischen Bibliotheken unter Linux

  3. So legen Sie eine statische IP-Adresse fest und konfigurieren das Netzwerk unter Linux

  4. So verwalten Sie den Ablauf und die Alterung von Benutzerkennwörtern in Linux

  5. So konfigurieren Sie statische und dynamische IP-Adressen in Arch Linux

Statische und dynamische IP-Adresskonfigurationen:DHCP-Bereitstellung

Statische und dynamische IP-Adresskonfigurationen für DHCP

So installieren und verwalten Sie Evillimiter zur Steuerung Ihres Wi-Fi-Netzwerks unter Linux

So erstellen und verwalten Sie virtuelle Maschinen in KVM

So erkennen und verwalten Sie Geräte unter Linux

So installieren und konfigurieren Sie WordPress mit Ansible