Es wird immer viele Abweichungen zwischen Ihren verwalteten Systemen geben. Aus diesem Grund müssen Sie lernen, mit Ansible-Variablen zu arbeiten.
In diesem Tutorial erfahren Sie, wie Sie Ansible-Variablen definieren und referenzieren. Außerdem erfahren Sie, wie Sie mit Ansible Facts Informationen zu Ihren verwalteten Knoten abrufen.
Darüber hinaus lernen Sie auch, wie Sie Register verwenden, um Aufgabenausgaben zu erfassen.
Wenn Sie zum ersten Mal hier sind, werfen Sie bitte einen Blick auf die vorherigen Kapitel dieser Serie:
- Ansible RHCE #1:Einführung und Installation
- Ansible RHCE Nr. 1:Ausführen von Ad-hoc-Befehlen
- Ansible RHCE #1:Playbooks verstehen
Teil 1:Arbeiten mit Variablen in Ansible
Beginnen wir zunächst mit Variablen. Denken Sie daran, dass all dies in Ihre YML-Datei geschrieben wird.
Variablen definieren und referenzieren
Sie können die Variablen verwenden -Schlüsselwort, um Variablen direkt in einem Playbook zu definieren.
Beispielsweise können Sie eine fav_color definieren Variable und setzen Sie ihren Wert wie folgt auf Gelb:
---
- name: Working with variables
hosts: all
vars:
fav_color: yellow
Wie verwenden Sie nun (Referenz) die fav_color Variable? Ansible verwendet das Templating-System Jinja2, um mit Variablen zu arbeiten. In dieser Serie wird es ein spezielles Tutorial geben, das Jinja2 behandelt, aber im Moment müssen Sie nur die Grundlagen kennen.
Um den Wert von fav_color abzurufen Variable; Sie müssen es wie folgt in geschweifte Klammern einschließen:
My favorite color is {{ fav_color }}
Beachten Sie, dass, wenn Ihre Variable das erste Element (oder einzige Element) in der Zeile ist, die Verwendung von Anführungszeichen wie folgt obligatorisch ist:
"{{ fav_color }} is my favorite color."
Lassen Sie uns nun ein Playbook mit dem Namen variables-playbook.yml schreiben das alles zusammenfasst:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
fav_color: yellow
tasks:
- name: Show me fav_color value
debug:
msg: My favorite color is {{ fav_color }}.
Ich habe den debug verwendet Modul zusammen mit der msg Moduloption zum Drucken des Werts von fav_color Variable.
Führen Sie nun das Playbook aus und Sie werden Ihre Lieblingsfarbe wie folgt angezeigt sehen:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Gathering Facts] *********************************************************
ok: [node1]
TASK [Show me fav_color value] *************************************************
ok: [node1] => {
"msg": "My favorite color is yellow."
}
PLAY RECAP *********************************************************************
node1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Erstellen von Listen und Wörterbüchern
Sie können auch Listen und Wörterbücher verwenden, um mehrwertige Variablen zu definieren. Beispielsweise können Sie eine Liste mit dem Namen port_nums definieren und setzen Sie seinen Wert wie folgt:
vars:
port_nums: [21,22,23,25,80,443]
Sie hätten auch die folgende Methode verwenden können, um port_nums zu definieren was äquivalent ist:
vars:
port_nums:
- 21
- 22
- 23
- 25
- 80
- 443
Sie können alle Werte in port_nums drucken wie folgt:
All the ports {{ port_nums }}
Sie können auch auf ein bestimmtes Listenelement zugreifen:
First port is {{ port_nums[0] }}
Beachten Sie, dass Sie einen Index (Position) verwenden, um auf Listenelemente zuzugreifen.
Sie können auch ein Wörterbuch mit dem Namen Benutzer definieren wie folgt:
vars:
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Es gibt zwei verschiedene Möglichkeiten, wie Sie auf Dictionary-Elemente zugreifen können:
- dict_name['key'] -> users['bob']['shell']
- dict_name.key -> users.bob.shell
Beachten Sie, dass Sie einen Schlüssel verwenden, um auf Wörterbuchelemente zuzugreifen.
Jetzt können Sie die variables-playbook.yml bearbeiten Playbook, um Listen und Wörterbücher in Aktion zu zeigen:
[[email protected] plays]$ cat variables-playbook.yml
---
- name: Working with variables
hosts: node1
vars:
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
tasks:
- name: Show 2nd item in port_nums
debug:
msg: SSH port is {{ port_nums[1] }}
- name: Show the uid of bob
debug:
msg: UID of bob is {{ users.bob.uid }}
Sie können jetzt das Playbook ausführen, um das zweite Element in port_nums anzuzeigen und Bobs UID anzeigen:
[[email protected] plays]$ ansible-playbook variables-playbook.yml
PLAY [Working with variables] **************************************************
TASK [Show 2nd item in port_nums] **********************************************
ok: [node1] => {
"msg": "SSH port is 22"
}
TASK [Show the uid of bob] *****************************************************
ok: [node1] => {
"msg": "UID of bob is 1122"
}
Einschließen externer Variablen
Genauso wie Sie Aufgaben in ein Playbook importieren (oder einschließen) können. Dasselbe kannst du auch mit Variablen machen. Das heißt, Sie können in einem Playbook Variablen einschließen, die in einer externen Datei definiert sind.
Lassen Sie uns zur Demonstration eine Datei mit dem Namen myvars.yml erstellen die unsere port_nums enthält Liste und Benutzer Wörterbuch:
[[email protected] plays]$ cat myvars.yml
---
port_nums: [21,22,23,25,80,443]
users:
bob:
username: bob
uid: 1122
shell: /bin/bash
lisa:
username: lisa
uid: 2233
shell: /bin/sh
Lesen Sie die ganze Geschichte
Der Rest des Artikels ist nur für LHB-Mitglieder verfügbar. Sie können sich jetzt KOSTENLOS anmelden, um den Rest dieses Artikels zusammen mit dem Zugriff auf alle Beiträge nur für Mitglieder zu lesen. Außerdem abonnieren Sie unseren zweiwöchentlichen Linux-Newsletter.
AbonnierenSie haben bereits ein Konto?Melden Sie sich an