• Erledigen Sie die Anwendungssicherheit auf die richtige Weise! Erkennen, schützen, überwachen, beschleunigen und mehr…
  • Erfahren Sie mehr über Ansible Playbook, um die Aufgaben zu automatisieren.

    Zuvor haben wir diskutiert Ansible Einführung, InstallationsanleitungLassen Sie uns als nächstes über Playbook und seine Bausteine ​​sprechen.

    Was ist Ansible Playbook?

    Das Playbook ist die Ansible-Automatisierungssprache. Es ist eine einfache Datei mit einer Reihe von Anweisungen. In Playbooks definieren wir, was Ansible tun soll. Playbooks enthalten Spiele, in denen Aufgaben ausgeführt werden, und in diesen Aufgaben werden Module ausgeführt. Ihre Aufgaben werden nacheinander ausgeführt.

    Zum Beispiel kann es so einfach sein, eine Reihe von Befehlen auf verschiedenen Servern in einer Sequenz auszuführen und diese Server der Reihe nach neu zu starten. Oder es kann so komplex sein wie das Bereitstellen und Bereitstellen von Hunderten von VMs in einer öffentlichen und privaten Cloud, einschließlich Lastausgleich, Überwachung und Netzwerkeinstellungen.

    Playbook-Sprache

    Playbooks sind einfache Dateien, die in YAML-Code geschrieben sind.

    YAML ist eine Datenserialisierungssprache. Es ist menschlich und maschinenlesbar. Sie benötigen keine speziellen Codierungsfähigkeiten, um YAML-Codes zu schreiben. Sie können sich die Datenserialisierungssprache als Übersetzer vorstellen, um Ihre gesamte Datenstruktur aufzuschlüsseln und in einer Reihenfolge zu serialisieren, die für die spätere Verwendung erneut rekonstruiert werden kann. Sie können diese rekonstruierte Datenstruktur in derselben Umgebung oder sogar in einer anderen Umgebung verwenden.

    Unten finden Sie eine YAML-Beispieldatei zum Installieren von MySQL:

    ---
    - name: Install MySQL
      hosts: geekflare-mysql-service
      tasks:
        - name: Install MySQL
          action: $ansible_pkg_mgr pkg=mysql-server state=installed
        - name: Add Python MySQL DB
          action: $ansible_pkg_mgr pkg=python-mysqldb state=installed

    Ansible Playbook-Grundlagen

    Dieser Teil des Artikels behandelt die grundlegenden Ansible-Konzepte, um mehr über Ansible Playbook zu erfahren.

    Hosts und Benutzer

    Ansible benötigt Zielcomputer in der Infrastruktur, auf denen Spiele aus dem Ansible-Playbook bereitgestellt werden müssen. Hosts werden über ihre IP-Adressen zum Ansible-Inventar hinzugefügt. Hosts sind eine Liste von einer oder mehreren Gruppen oder Hostmustern, die durch einen Doppelpunkt getrennt sind. Der remote_user enthält den Namen des Benutzerkontos.

    ---
    - hosts: ProdServers
      remote_user: geekflare

    Variablen

    Mit Variablen können Sie die Ausführung eines Playbooks ändern. Sie können fast überall im Playbook verwendet werden und können von einem Inventar geerbt werden, das explizit zur Laufzeit festgelegt wurde und zu Beginn eines Playbook-Laufs ermittelt wurde. Sie können einen Variablennamen mit Buchstaben, Zahlen und Unterstrichen definieren, dieser darf jedoch nur mit einem Buchstaben beginnen.

    Beispielsweise ist port_01 eine gültige Variable, während 01_post eine ungültige Variable ist. Hier ist ein Beispiel für Variablen in einem Ansible Playbook:

    vars:
        http_port: 80
        max_clients: 200

    Die Vorräte

    Um ein Playbook auszuführen, benötigen Sie eine Liste von Zielen, auf denen die Automatisierung stattfinden soll. Dies ist, was ein Inventar tut. Inventarlisten können auf verschiedene Arten erstellt und gespeichert werden, einschließlich statischer Dateien, dh Ansible Hosts. Oder es kann dynamisch über ein Inventarskript generiert werden, das eine Liste von Hosts für eine externe Quelle abruft.

    Sie können eine Variable auch als Teil einer Inventarliste angeben. Inventare sind letztendlich eine Liste von Dingen, die Sie automatisieren möchten.

    [webservers]
    192.168.20.1
    192.168.20.2
    192.168.20.4
    [dbservers]
    172.17.1.56
    172.17.1.57

    Aufträge

    Spiele in ansible Playbook-Ausführungsaufgaben. Die Aufgabe ist für die Ausführung von Ansible-Modulen verantwortlich. Es kann jeweils nur eine Aufgabe ausgeführt werden, und Aufgaben werden in sequentieller Reihenfolge ausgeführt. Ihre Aufgaben sind in YAML geschrieben, einer Sprache, die Englisch ähnelt.

    Beispiele: Installieren von Paketname, Aktualisieren des Software-Namens usw. Nachfolgend finden Sie ein Beispiel für eine Aufgabe im Ansible-Playbook zum Installieren von httpd:

    tasks:
      - name: Install httpd Package
        yum: name=httpd state=latest

    Handler

    Handler sind eine besondere Art von Aufgaben.

    Sie können durch eine Aufgabe ausgelöst werden und werden am Ende des Spiels einmal ausgeführt. Es wird verwendet, um Benachrichtigungen zu senden, wenn sich Änderungen an der Konfigurationsdatei ergeben, z. B. um den Dienst zu benachrichtigen, um Apache nach der Installation zu starten. Die Syntax "Benachrichtigen" wird zum Aufrufen von Handlern verwendet. Unten finden Sie ein Beispiel für einen Handler zum Neustarten von Apache:

    ---
    - hosts: all
      tasks:
      - name: ensure apache is at the latest version
        yum: name=httpd state=latest
        notify:
        - restart apache
      - name: ensure apache is running (and enable it at boot)
        service: name=httpd state=started enabled=yes
      handlers:
        - name: restart apache
          service: name=httpd state=restarted

    Erstellen Sie Ihr erstes Ansible-Playbook und führen Sie es aus

    Lassen Sie mich Ihnen sagen, wie man ein Spielbuch schreibt. Jedes Spielbuch beginnt mit drei Strichen (-) oben.

    Das erste, was Sie in einem Ansible Playbook erwähnen, sind die Host-Computer, auf denen Sie das Playbook ausführen möchten.

    Dann können Sie Variablen erwähnen, indem Sie Fakten sammeln. Dann können Sie die verschiedenen Aufgaben erwähnen, die Sie ausführen möchten. Denken Sie jetzt daran, dass die Aufgabe in derselben Reihenfolge ausgeführt wird, in der Sie sie geschrieben haben. Wenn Sie beispielsweise zuerst Software A und dann Software B installieren möchten, stellen Sie sicher, dass die erste im Playbook geschriebene Aufgabe darin besteht, Software A zu installieren, und dass die nächste Aufgabe Software B installieren kann.

    Dann haben Sie unten Handler. Die Handler sind ebenfalls Aufgaben, aber der Unterschied besteht darin, dass Sie Handler ausführen, für die Sie eine Art Trigger in der Liste der Aufgaben benötigen, um Handler auszuführen.

    Lassen Sie mich Ihnen zeigen, wie Sie ein ansibles Playbook erstellen, um nginx auf einem Host zu installieren, zu starten und zu starten.

    Erstellen Sie eine .yml-Datei, in der Sie Ihre YAML-Codes für die Erstellung eines ansiblen Playbooks ablegen.

    gedit nginx.yml

    Fügen Sie den folgenden YAML-Code in diese Datei ein und speichern Sie die Datei.

    ---
    - hosts: Client
      sudo: yes
      vars:
        - server_port: 8080
    
      tasks:
        - name: Installs nginx web server
          apt: pkg=nginx state=installed update_cache=true
          notify:
            - start nginx
    
      handlers:
        - name: start nginx
          service: name=nginx state=started

    Die obige YAML-Datei beginnt mit GastgeberIch möchte dieses Playbook auf dem Client-Computer (Client) ausführen. Die Client-IP-Adresse ist bereits in gespeichert /etc/ansible/hosts Datei.

    In der nächsten Zeile können Sie die Aufgaben mit ausführen sudo Privilegien.

    Dann habe ich definiert Server Port als Variable in diesem Spielbuch.

    Dann kommt mein erster Auftrag in diesem ansible Playbook, um einen Nginx-Webserver zu installieren. Diese Aufgabe hat auch benachrichtigen Parameter, dh nach dieser Aufgabe einen Handler mit run.

    Schließlich habe ich eine geschrieben Handler um nginx auf dem Client-Computer zu starten.

    Nachdem Sie mit den YAML-Codes im Ansible-Playbook klar sind, führen Sie das Playbook aus. Unten finden Sie die Syntax zum Ausführen eines ansiblen Playbooks:

    ansible-playbook file_name.yml

    Jetzt werde ich das Ansible-Playbook ausführen, das ich zum Installieren und Starten von Nginx erstellt habe.

    [email protected]:/home/geekflare# ansible-playbook nginx.yml 
    
    PLAY [Client] ******************************************************************
    
    TASK [Gathering Facts] *********************************************************
    ok: [node1]
    
    TASK [Installs nginx web server] ***********************************************
    
    changed: [node1]
    
    RUNNING HANDLER [start nginx] **************************************************
    ok: [node1]
    
    PLAY RECAP *********************************************************************
    node1                      : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

    Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Nginx-Server vom ansible-Playbook installiert und korrekt gestartet wurde.

    [email protected]:/home/geekflare# ps waux | grep nginx
    root      3021  0.0  0.0  77676  1516 ?        Ss   15:27   0:00 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

    Fazit

    Das war über Ansible Playbook. Ich hoffe, dieser Artikel hat Ihnen geholfen zu lernen, wie Sie ein Ansible-Playbook erstellen und ausführen können. Schau dir das an Kurs, wenn Sie erweiterte Themen in Ansible lernen möchten, einschließlich Rollen, Jinja2, Lookups, Filter, Benutzerdefinierte Module.