Wie man mit Ansible -Variablen und Fakten arbeitet - Teil 8

Wie man mit Ansible -Variablen und Fakten arbeitet - Teil 8

Wir haben Variablen in dieser Ansible -Serie erwähnt und nur um ein wenig um Ihre Gedanken zu joggen. A Variable, Genau wie in vielen Programmiersprachen ist im Wesentlichen ein Schlüssel, der einen Wert darstellt.

Was einen gültigen variablen Namen ausmacht?

Ein variabler Name enthält Buchstaben, Zahlen, Unterstriche oder eine Mischung aus entweder 2 oder allen von ihnen. Denken Sie jedoch daran, dass ein variabler Name immer mit einem Buchstaben beginnen muss und keine Räume enthalten sollte.

Schauen wir uns einige Beispiele für gültige und inakzeptable Variablennamen an:

Beispiele für variable Namen: Beispiele:

Football Foot_ball Football20 Foot_ball20 

Beispiele für Nicht-Valid-Variable Name:

Fußball 20 Fußball 

Lassen Sie uns die variablen Typen diskutieren:

1. Spielbuchvariablen

Spielbuch Variablen sind recht einfach und unkompliziert. Eine Variable in a zu definieren Spielbuch, Verwenden Sie einfach das Schlüsselwort vars Vor dem Schreiben Ihrer Variablen mit Einrückung.

Um auf den Wert der Variablen zuzugreifen, legen Sie sie zwischen die mit Anführungszeichen eingeschlossenen doppelten lockigen Klammern ein.

Hier ist ein einfaches Beispiel für das Spielbuch:

- Hosts: Alle VARs: Gruß: Hallo Welt! Aufgaben: - Name: Ansible Basic Variable Beispiel Debug: MSG: " Gruß  " 

Im obigen Spielbuch die Gruß Variable wird durch den Wert ersetzt Hallo Welt! Wenn das Spielbuch ausgeführt wird. Das Spielbuch druckt einfach die Nachricht aus Hallo Welt! bei Ausführung.

Spielbuchvariablen in Ansible

Zusätzlich können Sie eine Liste oder eine Reihe von Variablen wie gezeigt haben:

Das folgende Spielbuch zeigt eine Variable namens Kontinente. Die Variable enthält 5 verschiedene Werte - Kontinentnamen. Auf jeden dieser Werte kann leicht mithilfe von mit dem zugegriffen werden Index 0 als erste Variable.

Das Beispiel des folgenden Playbooks ruft und wird angezeigt Asien (Index 1).

- Hosts: Alle Vars: Kontinente: - Afrika - Asien - Südamerika - Nordamerika - Europa Aufgaben: - Name: Ansible List Variable Beispiel Debug: MSG: "Continents [1]" 
Array von Variablen in Ansible

Die variable Liste kann in ähnlicher Weise wie gezeigt strukturiert werden:

VARS: Kontinente: [Afrika, Asien, Südamerika, Nordamerika, Europa] 

Verwenden Sie die Auflisten aller Elemente in der Liste With_items Modul. Dies wird alle Werte im Array durchlaufen.

- Hosts: Alle Vars: Kontinente: [Afrika, Asien, Südamerika, Nordamerika, Europa] Aufgaben: - Name: Ansible Array Variablen Beispiel Debug: MSG: " Artikel  "With_items: -"  Kontinente  " 
Listen Sie Ansible Array -Variablen auf

Eine andere Art von Ansible -Variable ist die Wörterbuch Variable.

Wörterbuch Variablen werden zusätzlich im Spielbuch unterstützt. Um die Wörterbuchvariable zu definieren, identifizieren Sie einfach das Schlüsselwertpaar direkt unter dem Namen der Wörterbuchvariablen.

Hosts: Switch_f01 Vars: http_port: 8080 default_gateway: 10.200.50.1 VLANS: ID: 10 Port: 2 

Im obigen Beispiel, Vlans ist die Wörterbuchvariable während Ausweis Und Hafen sind die Schlüsselwertpaare.

hosts: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 port: 20 tasks: name: Configure default gateway system_configs: default_gateway_ip: “ default_gateway “ name: Label port on vlan 10 vlan_config: vlan_id: “ vlans ['id'] “ port_id: 1/1/ vlans ['port'] 

Für port_id, Da wir den Wert mit Text und nicht mit der Variablen beginnen, sind Anführungszeichen nicht erforderlich, um die lockigen Klammern zu umgeben.

2. Spezielle Variablen

Ansible bietet eine Liste vordefinierter Variablen, auf die in Jinja2 -Vorlagen und -spielbüchern verwiesen werden kann, aber nicht vom Benutzer geändert oder definiert werden kann.

Zusammen wird die Liste der vordefinierten Variablen ansible als als bezeichnet als Ansible Fakten und diese werden gesammelt, wenn ein Spielbuch ausgeführt wird.

Verwenden Sie das, um eine Liste aller ansiblen Variablen zu erhalten aufstellen Modul im Befehl Ansible Ad-hoc wie unten gezeigt:

# Ansible -m Setup Hostname 

Dies zeigt die Ausgabe im JSON -Format wie gezeigt an:

# Ansible -m Setup Localhost 
Listen Sie Ansible -Variablen auf

Aus der Ausgabe können wir sehen, dass einige der Beispiele für Ansible Special Variablen umfassen:

ansible_architecture ansible_bios_date ansible_bios_version ansible_date_time ansible_maachine ansible_memefree_mb ansible_os_family ansible_selinux 

Es gibt viele andere ansible spezielle Variablen. Dies sind nur einige Beispiele.

Diese Variablen können in a verwendet werden Jinja2 Vorlage wie gezeigt:

  

Der Hostname dieses Webservers ist Ansible_hostname

Es läuft weiter Ansible_os_familySystem

3. Bestandsvariablen

Schließlich haben wir auf der Liste Ansible -Bestandsvariablen. Ein Inventar ist eine Datei in Ini Format, das alle Hosts enthält, die von Ansible verwaltet werden sollen.

In Beständen können Sie einem Hostsystem eine Variable zuweisen und später in einem Spielbuch verwenden.

[web_servers] web_server_1 ansible_user = centos http_port = 80 web_server_2 ansible_user = ubuntu http_port = 8080 

Das obige kann in einem Spielbuch dargestellt werden Yaml Datei wie gezeigt:

--- web_servers: web_server_1: ansible_user = centos http_port = 80 web_server_2: ansible_user = ubuntu http_port = 8080 

Wenn die Host -Systeme die gleichen Variablen teilen, können Sie eine andere Gruppe in der Bestandsdatei definieren, um sie weniger umständlich zu machen und unnötige Wiederholungen zu vermeiden.

Zum Beispiel:

[Web_Servers] Web_Server_1 Ansible_User = Centos http_port = 80 web_server_2 ansible_user = centos http_port = 80 

Das obige kann als:

[web_servers] web_server_1 web_server_2 [web_servers: vars] ansible_user = centos http_port = 80 

Und im Spielbuch Yaml Datei wird dies wie gezeigt definiert:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user = centos http_port = 80 

Ansible Fakten

Beim Ausführen von Spielbüchern ist die erste Aufgabe, die Ansible ausführt, die Ausführung der Setup -Aufgabe. Ich bin mir ziemlich sicher, dass Sie auf die Ausgabe gestoßen sind:

Aufgabe: [Fakten sammeln] ********* 

Ansible -Fakten sind nichts als Systemeigenschaften oder Informationen zu Remote -Knoten, mit denen Sie verbunden sind. Diese Informationen umfassen die Systemarchitektur, die Betriebssystemversion, die BIOS -Informationen, die Zeit und das Datum der Systeme, die Systemübergangszeit, die IP -Adresse und die Hardwareinformationen, um nur einige zu erwähnen.

Um die Fakten über jedes System zu erhalten, verwenden Sie einfach die aufstellen Modul wie in dem folgenden Befehl gezeigt:

# Ansible -m Setup Hostname 

Zum Beispiel:

# Ansible -m Setup Database_Server 

Dies druckt einen großen Datensatz in aus JSON Format wie gezeigt:

Ansible erhalten Systemfakten

Ansible Fakten helfen den Systemadministratoren, die beispielsweise abhängig vom Betriebssystem ausführen sollen, nützlich, um zu wissen, welche Softwarepakete installiert werden müssen und wie sie konfiguriert werden sollen, usw.

Benutzerdefinierte Fakten

Wussten Sie auch, dass Sie Ihre eigenen benutzerdefinierten Fakten erstellen können, die von Ansible gesammelt werden können? Ja, du kannst. Also, wie geht es dir?? Lassen Sie uns die Gänge verschieben und sehen, wie.

Der erste Schritt besteht darin, a zu erstellen /etc/Ansible/Fakten.D Verzeichnis auf dem verwalteten oder entfernten Knoten.

Erstellen Sie in diesem Verzeichnis eine Datei mit a .Tatsache Verlängerung. Diese Datei (en) wird zurückgegeben JSON Daten, wenn das Spielbuch auf dem Ansible Control -Knoten ausgeführt wird, was die anderen Fakten umfasst, die Ansible nach einem Spielbuchlauf abruft.

Hier ist ein Beispiel für eine benutzerdefinierte Faktendatei mit dem Namen Terminzeit.Tatsache das ruft Datum und Uhrzeit ab.

# Mkdir -p/etc/ansible/Fakten.d # vim/etc/ansible/fakten.D/Date_Time.Tatsache 

Fügen Sie die folgenden Zeilen hinzu.

#!/bin/bash date = "Datum" echo "\" Datum "":"" $ Date \ """" 

Speichern und beenden Sie die Datei.

Weisen Sie nun die Ausführungsberechtigungen zu:

# Chmod +x/etc/ansible/Fakten.D/Date_Time.Tatsache 

Jetzt habe ich ein Playbook auf einem ansible Steuerknoten genannt Prüfdatum.YML.

--- - Hosts: Webservers -Aufgaben: - Name: Nehmen Sie sich benutzerdefinierte Fakten Debug: MSG: Die benutzerdefinierte Tatsache ist Ansible_local.Terminzeit 

Gehen Sie die Faktendatei an die an Ansible_Local Variable. Der Ansible_Local speichert alle benutzerdefinierten Fakten.

Führen Sie nun das Spielbuch aus und beobachten Sie die in der Faktendatei gespeicherten Ansible -Abrufinformationen:

# ansible_playbook check_date.YML 
Erstellen Sie ansible benutzerdefinierte Fakten
Abschluss

Dies bringt uns zum Ende dieses Tutorials zur Arbeit mit Ansible -Variablen und Fakten.

"