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

Eine Einführung in Ansible-Fakten

Ansible Fakten sind Daten, die über Zielknoten (zu konfigurierende Hostknoten) gesammelt und an Controller-Knoten zurückgegeben werden. Ansible-Fakten werden im JSON-Format gespeichert und werden verwendet, um wichtige Entscheidungen über Aufgaben basierend auf ihren Statistiken zu treffen. Fakten sind in ansible_facts Variable, die von Ansible Engine verwaltet wird. Ansible Facts spielen eine wichtige Rolle bei der Synchronisierung mit Hosts gemäß Echtzeitdaten .

[ Das könnte Ihnen auch gefallen:Eine Einführung in Ansible Tower ]

Was genau sind Ansible-Fakten und wie werden sie verwendet?

Ansible Facts sind die Host-spezifischen Systemdaten und Eigenschaften, mit denen Sie sich verbinden. Ein Fakt kann die IP-Adresse, BIOS-Informationen, Softwareinformationen eines Systems und sogar Hardwareinformationen sein. Ansible Facts helfen dem Administrator, die Hosts basierend auf ihrem aktuellen Zustand zu verwalten, anstatt direkt Maßnahmen zu ergreifen, ohne Informationen über den Zustand des Systems zu haben.

Hier ist ein Szenario:Sie müssen den Apache-Webserver auf allen Ihren Linux-Hosts installieren. Sie wissen, dass auf Red Hat Enterprise Linux (RHEL) basierende Hosts mit dem Red Hat Package Manager (RPM) und yum/dnf funktionieren . Andere Linux-Distributionen verwenden ihre eigenen Paketmanager, und daher wäre es nicht möglich, dieselbe Aufgabe auf verschiedenen Systemen auszuführen, ohne diese Unterschiede zu ändern und auf sie hinzuweisen. Die Paketnamen unterscheiden sich auch zwischen den Distributionen. Auf RHEL-Systemen heißt das Apache-Webserver-Paket beispielsweise httpd, während es in anderen Distributionen apache2 heißt.

Hier ist ein Ansible-Playbook zur Veranschaulichung des Problems:

- hosts: all
  tasks:
  - package:
      name: "httpd"
      state: present
    when ansible_facts["os_name"] == "RedHat"
  - package:
      name: "apache2"
      state: present
    when ansible_facts["os_name"] == "Ubuntu"

Hier sammelt das Skript mithilfe von Ansible-Fakten Informationen über das System und führt dann die Operation entsprechend aus. Bei der Installation auf RHEL-Systemen wird das Ubuntu-basierte Paket automatisch übersprungen und umgekehrt. Ebenso können Sie die Ansible-Fakten verwenden, um eine Operation auszuführen, wenn das System nur über eine minimale Menge an Ressourcen verfügt.

Kurz gesagt, mithilfe von Ansible-Fakten kann ein Systemadministrator Ansible intelligenter machen, indem er Parameter dafür angibt, wann Aufgaben ausgeführt werden sollen und wann nicht.

Zugriff auf die Fakten

Ansible facts verwendet das setup Modul zum Sammeln von Fakten jedes Mal, bevor die Playbooks ausgeführt werden.

Verwendung der Ad-hoc-Befehle von Ansible

1. Greifen Sie mit Ad-hoc-Befehlen auf Ansible Facts zu

Das setup Das Modul ruft alle Details von den Remote-Hosts zu unseren Controller-Knoten ab und gibt sie direkt auf unserem Bildschirm aus, damit die Fakten für die Benutzer sichtbar sind.

ansible all -m setup

2. Herausfiltern eines bestimmten Werts aus Ansible-Fakten

Hier das setup -Modul wird verwendet, um die Fakten über das System abzurufen, und außerdem wird es den Filter verwenden Argument, um den Wert aus den Ansible-Fakten anzuzeigen.

ansible all -m setup -a "filter=ansible_cmdline"

Hinweis :Ansible Fakten werden nur abgerufen, wenn mit Playbooks gearbeitet wird. Um mit Ad-hoc-Befehlen auf die Ansible-Fakten zuzugreifen, verwenden Sie setup Modul.

Mit dem Ansible-Playbook

Um auf die Variablen von Ansible facts im Ansible Playbook zuzugreifen, müssen wir den tatsächlichen Namen verwenden, ohne das ansible zu verwenden Schlüsselwort.

ansible_facts["ansible_system"] ❌

ansible_facts["System"] ✔️

Die gather_facts Modul aus dem Ansible Playbook führt das setup aus Modul standardmäßig am Anfang jedes Playbooks, um die Fakten über entfernte Hosts zu sammeln.

3. Zugriff auf Fakten mit Ansible Playbook

Rufen Sie die Ansible-Fakten ab und zeigen Sie sie mithilfe eines Playbooks an.

    - hosts: all
      tasks:
      - debug:
          var: ansible_facts

4. Zugriff auf einen bestimmten Fakt mithilfe eines Ansible-Playbooks

Abrufen der Ansible-Fakten, Filtern und Anzeigen mithilfe eines Playbooks.

    - hosts: all
      tasks:
      - debug:
          var: ansible_facts["cmdline"]

Ansible Fakten und der Datentyp

Ansible Facts werden im JSON-Format gespeichert und können in drei Hauptkategorien eingeteilt werden:

Liste :Speichert die Liste der Elemente und die gespeicherten Informationen werden in eckige Klammern [] geschrieben . Dies sind meist Fakten, die mehrere Werte haben können, z. B. system_capablities . Der Zugriff auf die Liste erfolgt über eckige Klammern und Angabe des Indexes.

    ansible_facts["all_ipv6_addresses"][1]
    ansible_facts["all_ipv6_addresses"][2]

Wörterbuch :Speichert die Daten als Sammlung von Schlüssel-Wert-Paaren, und die Informationen werden in geschweiften Klammern {} gespeichert . Dies sind meistens die Fakten, die Unterfakten enthalten, z. B. memory_mb . Auf das Wörterbuch wird mit dem Punktoperator zugegriffen.

    ansible_facts.memory_mb.real

Unsicherer Ansible-Text :Dieser Variablentyp hat keinen Unterteil und speichert die Daten direkt, z. B. machine . Auf Ansible Unsafe Text kann direkt über den Faktnamen zugegriffen werden.

    ansible_facts["machine"]

Verwenden Sie type_debug filtern, um den Datentyp auf die Ansible-Fakten zu prüfen.

- hosts: all
  tasks:
  - debug:
      var: ansible_facts["all_ipv6_addresses"]|type_debug
  - debug:
      var: ansible_facts["memory_mb"]|type_debug
  - debug:
      var: ansible_facts["machine"]|type_debug

type_debug Filter fordert den Datentyp für den angegebenen Fakt auf, ohne den Wert für den Fakt auszugeben.

[ Suchen Sie nach mehr Informationen zur Systemautomatisierung? Beginnen Sie mit The Automated Enterprise, einem kostenlosen Buch von Red Hat. ] 

Abschluss

Ansible Facts sind Daten über das System, das Sie konfigurieren möchten. Diese Fakten machen Ihr Ansible-System intelligent, indem sie die Bedingungen dafür bereitstellen, wann eine Aufgabe verarbeitet werden soll. Sie können auch verarbeiten, indem Sie die Ansible-Fakten nicht angeben oder verwenden, aber das würde die Arbeit als Systemadministrator hektischer machen, da das Skript möglicherweise fehlschlägt oder einige der Dateien ändert, die nie geändert werden sollten.

Weitere Informationen zu Ansible-Fakten finden Sie in der offiziellen Dokumentation.


Linux
  1. Eine Einführung in den vi-Editor

  2. Dekonstruktion eines Ansible-Playbooks

  3. YAML für Ansible verstehen

  4. Eine kurze Einführung in Ansible-Rollen für die Linux-Systemverwaltung

  5. Ansible:sudo ohne Passwort

Eine Einführung in bpftrace für Linux

Einführung in Python-Pandas

So erstellen und verwenden Sie benutzerdefinierte Fakten in Ansible

Eine Einführung in den Vivaldi-Browser unter Linux

Einführung in die Ansible-Automatisierungsplattform

Eine kurze Einführung in Ansible Vault