GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So erstellen Sie Ansible Playbooks für die IT-Automatisierung

Playbook ist nichts anderes als Ansibles Konfigurationsverwaltungsskripts und kann verwendet werden, um Bereitstellungen und Konfigurationen von verwalteten Knoten zu verwalten. Das Playbook enthält eine Reihe von Richtlinien, die Ihre verwalteten Knoten durchsetzen sollen, oder eine Reihe von Schritten in einem allgemeinen IT-Prozess.

Playbooks werden in einer einfachen Textsprache geschrieben und entwickelt. Die Syntax, die wir in Playbooks verwenden, unterscheidet sich von normalen Befehlen, die wir im vorherigen Tutorial getestet haben.

Im vorherigen Tutorial haben wir gesehen, wie man Ansible unter CentOS 7 / RHEL 7 / Ubuntu 18.04 / 16.04 &Debian 9 installiert .

Ansible-Playbook erstellen

Für diese Demo erstellen wir ein Playbook namens web.yml zum Konfigurieren eines Hosts zum Ausführen eines Apache-Webservers . Jedes Playbook besteht aus einem oder mehreren Plays in einer Liste.

Für jeden Spielzug im Playbook können Sie auswählen, auf welche Computer in Ihrer Infrastruktur Sie abzielen und welcher Remote-Benutzer die Aufgaben ausführen soll.

vi web.yml

CentOS/RHEL-Playbook:

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

Ubuntu/Debian-Playbook:

---
- hosts: 192.168.1.30
  remote_user: raj
  become: yes
  become_method: sudo

  tasks:
  - name: Install Apache
    apt:
      name: apache2
      update_cache: yes
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=www-data group=www-data mode=0644

Erstellen Sie eine Demo-HTML-Datei (/etc/ansible/index.html ). Diese HTML-Datei wird im standardmäßigen DocumentRoot des Apache-Servers abgelegt auf dem verwalteten Knoten.

vi /etc/ansible/index.html

HTML:

<html>
  <head>
    <title>Apache is installed by Ansible</title>
  </head>
  <body>
  <h1>Apache is installed by Ansible</h1>
  <p>Now, Apache is managed through Ansible</p>
  </body>
</html>

Aufschlüsselung des Ansible-Playbooks

Jetzt gehen wir die einzelnen Abschnitte des Playbooks web.yml durch Datei, um zu verstehen, was das bedeutet.

Datei beginnt mit

---

Alle YAML-Dateien sollten mit (drei Bindestrichen) --- beginnen und dies zeigt den Beginn eines Dokuments an. YAML ist sehr platzempfindlich und nutzt diesen, um verschiedene Informationen zusammenzufassen. Leerzeichen müssen in Ihrer Datei konsistent sein, um richtig gelesen zu werden. Elemente auf derselben Einrückungsebene werden als gleichgeordnete Elemente betrachtet.

Host und Benutzer

---
- hosts: 192.168.1.20
  remote_user: raj

Die Hosts-Zeile ist eine Liste mit einer oder mehreren Gruppen (z. B. Demo-Servern) oder Hostmustern (z. B. 192.168.1.20), getrennt durch Doppelpunkte. Zusammen mit dem Host können Sie das Remote-Benutzerkonto erwähnen.

---
- hosts: 192.168.1.20
  remote_user: raj
  become: yes
  become_method: su

Sie müssen Root-Benutzer werden, um Pakete auf einem System zu installieren. Dazu können Sie Privilegien-Eskalationsmethoden wie su verwenden oder sudo . Wann immer Sie diese Art von Privilegien-Eskalationsmethoden verwenden, müssen Sie ein Ansible-Playbook mit --ask-become-pass ausführen Argument.

Aufgaben

Jetzt haben wir eine Reihe von Aufgaben.

  tasks:
  - name: Install Apache
    yum: pkg=httpd state=latest
  - name: Copying the demo file
    template: src=/etc/ansible/index.html dest=/var/www/html
              owner=apache group=apache mode=0644
  - name: Enable Apache on System Boot
    service: name=httpd enabled=yes

Jedes Spiel enthält eine Liste von Aufgaben, die der Reihe nach einzeln gegen alle Maschinen ausgeführt werden, die mit dem Host-Muster übereinstimmen, bevor mit der nächsten Aufgabe fortgefahren wird.

Wenn Sie das Playbook ausführen, wird es von oben nach unten ausgeführt, und Hosts mit fehlgeschlagenen Aufgaben werden für das gesamte Playbook aus der Rotation genommen.

Jede Aufgabe sollte einen Namen haben und wird verwendet, um die aktuelle Aktivität anzuzeigen, während das Playbook ausgeführt wird. Diese Ausgabe ist für Menschen, daher ist es schön, einigermaßen gute Beschreibungen für jeden Aufgabenschritt zu haben.

Hier wird die neueste Version von Apache installiert und die Demo-HTML (/etc/ansible/index.html) in das Verzeichnis /var/www/html des verwalteten Knotens kopiert und dann der Apache-Dienst aktiviert, damit er während des Systemstarts automatisch gestartet wird.

Benachrichtigen

Diese benachrichtigen Aktionen werden am Ende jedes Aufgabenblocks in einem Playbook ausgelöst und werden nur einmal ausgelöst, selbst wenn sie von mehreren verschiedenen Aufgaben benachrichtigt werden.

    notify:
    - start apache
    - setup firewalld
    - reload firewalld

Die benachrichtigen item enthält ein Item namens apache starten , Firewall einrichten und firewalld neu laden . Dies sind die Verweise auf Handler, die bestimmte Funktionen ausführen, wenn sie innerhalb einer Aufgabe aufgerufen werden. Wir definieren den Start-Apache und den Firewalld-Handler.

Handler

Handler sind Aufgabenlisten, die sich nicht wirklich von normalen Aufgaben unterscheiden. Sie werden jedoch nur ausgeführt, wenn ihnen von einem Task mitgeteilt wurde, dass Änderungen auf dem Clientsystem aufgetreten sind.

  handlers:
    - name: start apache
      service: name=httpd state=started
    - name: setup firewalld
      firewalld:
        service: http
        permanent: true
        state: enabled
    - name: reload firewalld
      service: name=firewalld state=restarted

In unserem Fall haben wir einen Handler, der den Apache-Dienst startet und die Firewall konfiguriert, nachdem das Paket installiert wurde.

Diese Aktion geschieht, weil der Melder den Handler über Änderungen am System benachrichtigt hat, was bedeutet, dass das Apache-Paket installiert und zusammen mit dieser Demodatei nach DocumentRoot kopiert werden musste.

Ansible Playbook ausführen

Sobald Sie ein Playbook fertig haben, können Sie es mit dem folgenden Befehl ausführen.

ansible-playbook web.yml -f 1 --ask-become-pass

OR

ansible-playbook web.yml -f 1 --ask-become-pass -u raj --ask-pass

Ansible-Playbook :Befehl zum Ausführen von Ansible-Playbooks.

web.yml: YAML-Datei (Ansible Playbook-Datei – die wir zu Beginn dieses Tutorials erstellt haben)

-f 1 :Playbook mit einem Parallelitätslevel von 1

–fragen-werden-passieren :Da wir Root-Benutzer werden müssen, um Pakete zu installieren.

-u raj :Benutzer auf dem verwalteten Knoten

Ausgabe:

Angenommen, Sie haben ein Playbook für eine Gruppe (z. B. Demo-Server) von Servern erstellt und möchten ein Playbook auf einem bestimmten Host ausführen. Der folgende Befehl führt Playbook nur auf 192.168.1.40 aus .

ansible-playbook -l 192.168.1.40 web.yml -u raj --ask-become-pass

Ansible Playbook-Aktionen überprüfen

Nachdem Sie ein Playbook ausgeführt haben, öffnen Sie Ihren Browser und navigieren Sie zu dem Remote-Host, der im Ansible-Inventar erwähnt wird.

In meinem Fall lautet die URL

http://192.168.1.20

Sie sollten nun die obige Seite Apache is installed by Ansible erhalten , und diese Seite bestätigt uns, dass Apache von Ansible installiert wurde.

Sie haben gelernt, wie Sie ein einfaches Playbook für die Automatisierung der Apache-Installation erstellen. Weitere Informationen zum Erstellen von Playbooks finden Sie hier .

Das ist alles.


Cent OS
  1. Wie ich Ansible und Anacron für die Automatisierung verwende

  2. So erstellen Sie ein Ansible-Playbook

  3. Entmystifizierung von Ansible für Linux-Systemadministratoren

  4. 6 Fähigkeiten zur Fehlerbehebung für Ansible-Playbooks

  5. So erstellen Sie einen Linux-Benutzer mit Ansible

So verwenden Sie Handler in Ansible Playbook

So erstellen Sie Ansible-Rollen und verwenden sie im Playbook

Ansible Guide:Ansible Playbook für LEMP Stack erstellen

So richten Sie das Ansible Automation Tool in CentOS 7 ein

So definieren und verwenden Sie Handler in Ansible Playbooks

So erstellen und führen Sie eine Ansible Playbook-Datei aus