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

RHCE Ansible Series #4:Ansible-Variablen, Fakten und Register

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
Linux
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So installieren und testen Sie Ansible unter Linux

  3. So übergeben Sie zusätzliche Variablen an ein Ansible-Playbook

  4. RHCE Ansible Series #8:Verschlüsseln von Inhalten mit Ansible Vault

  5. RHCE Ansible Series #7:Jinja2-Vorlagen

Ansible Inventar- und Konfigurationsdateien

Eine Einführung in Ansible-Fakten

RHCE Ansible Series #2:Ausführen von Ad-hoc-Befehlen

RHCE Ansible Serie Nr. 1:Sag Hallo zu Ansible

RHCE Ansible Series #3:Ansible Playbooks

RHCE Ansible Series #12:Ansible-Fehlerbehebung