centos:ansible:basics

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
centos:ansible:basics [28.06.2020 13:53. ] – [adhoc - Befehle] djangocentos:ansible:basics [29.03.2022 18:17. ] – [Ansible] django
Zeile 1: Zeile 1:
 ====== Ansible ====== ====== Ansible ======
 {{:centos:ansible:ansible_logo.png?nolink&125 |Bild: Ansible Logo}}  {{:centos:ansible:ansible_logo.png?nolink&125 |Bild: Ansible Logo}} 
-Einzelne Serversysteme mag man durchaus noch manuell einzeln installieren, konfigurieren und pflegen mögen und auch durchaus können. Komplexere Installationen, oder gleichartige Installationen lassen sich so aber nicht mehr ressourcenschonend und transparent nachvollziehbar betreiben. In solchen Umgebungen bedient man sich der Automatisierung bzw. Orchestrierung. +Einzelne Serversysteme mag man durchaus noch manuell einzeln installieren, konfigurieren und pflegen mögen und auch durchaus können. Komplexere Installationen, oder gleichartige Installationen lassen sich so aber nicht mehr ressourcenschonend und transparent nachvollziehbar betreiben. Daher wird man aus folgenden Gründen bestrebt sein, für diese Aufgaben ein Konfigurationsmanagement zu verwenden: 
 +  * Wiederkehrende und auch regelmässige Konfigurationsaufgaben und Tätigkeiten sollen automatisiert werden, um somit, 
 +  * Fehler bei manuellen Tätigkeiten bei copy & Paste, z.B. aus Dokumentationen wie z.B. aus diesem WIKI hier zu vermeiden, um auch dadurch 
 +  * wertvolle Ressourcen im speziellen hier die Arbeits- und Lebenszeit einzusparen. Darüber hinaus möchten wir auch sicherstellen, dass 
 +  * Aufgaben reproduzierbar nachvollzogen und auch bei Bedarf versioniert werden können. Zu guter Letzt wollen wir auch aus Sicherheitsaspekten \\ heraus die Administration und Konfiguration von einer zentralen Stelle aus bewerkstelligen und absichern. 
 + 
 +Genau in solchen Umgebungen bedient man sich daher der Automatisierung bzw. Orchestrierung. 
  
 Doch was versteht man nun unter diesem Begriff Orchestrierung? Orchestrierung beschreibt das flexible Kombinieren mehrerer Services bzw. Dienste wie auch unterschiedlicher Serverinstanzen zu einer sinnvollen (Gesamt-)Konzeption oder auch Komposition. So wird man den Webserver erst starten, wenn zuvor der Datenbank und z.B. das NAS zur Verfügung steht und nicht umgekehrt.  Doch was versteht man nun unter diesem Begriff Orchestrierung? Orchestrierung beschreibt das flexible Kombinieren mehrerer Services bzw. Dienste wie auch unterschiedlicher Serverinstanzen zu einer sinnvollen (Gesamt-)Konzeption oder auch Komposition. So wird man den Webserver erst starten, wenn zuvor der Datenbank und z.B. das NAS zur Verfügung steht und nicht umgekehrt. 
Zeile 11: Zeile 17:
   - Ansible kann in der Community Edition kostenlos genutzt werden. Darüber hinaus bietet aber Red Hat aber auch kostenpflichtige Editionen mit grafischer Oberfläche und Support an.   - Ansible kann in der Community Edition kostenlos genutzt werden. Darüber hinaus bietet aber Red Hat aber auch kostenpflichtige Editionen mit grafischer Oberfläche und Support an.
   - Eine der grössten Vorteile von Ansible, sind die vorgefertigten "Playbooks", die z.B. auf GitHub von vielen fleissigen Helfern der Community zur Verfügung gestellt werden. Bei diesen Playbooks handelt es sich um vorgefertigte Scripte, mit denen Server automatisiert bereitgestellt und konfiguriert werden können. Somit muss nicht für jede Anwendung erneut eine neue Konfigurationsvorgehensweise geschrieben werden um eine Anwendung zu orchestrieren. Dank dieser vorgefertigten Playbooks ist die Automatisierung also wesentlich einfacher. Alle Konfigurationsinformationen werden in diesen Ansible Playbooks gesammelt und auf die im Host Inventory gespeicherten Hosts ausgerollt.   - Eine der grössten Vorteile von Ansible, sind die vorgefertigten "Playbooks", die z.B. auf GitHub von vielen fleissigen Helfern der Community zur Verfügung gestellt werden. Bei diesen Playbooks handelt es sich um vorgefertigte Scripte, mit denen Server automatisiert bereitgestellt und konfiguriert werden können. Somit muss nicht für jede Anwendung erneut eine neue Konfigurationsvorgehensweise geschrieben werden um eine Anwendung zu orchestrieren. Dank dieser vorgefertigten Playbooks ist die Automatisierung also wesentlich einfacher. Alle Konfigurationsinformationen werden in diesen Ansible Playbooks gesammelt und auf die im Host Inventory gespeicherten Hosts ausgerollt.
-  - Ein weiterer Vorteil von Ansible, ist der Umstand dass kein separater eigener Server aufgesetzt werden muss, um Ansible und seine Paybooks zu nutzen. Der (Client-)Rechner, auf dem die Playbooks zur Verfügung stehen, müssen nur die Server, die automatisiert verwaltet und konfiguriert werden sollen, mit Hilfe der SSH erreichen werden können. \\ Ansible arbeitet im Push-Verfahren und benötigt neben SSH und Python keine weitere Installation auf den einzelnen Systemen.  +  - Ein weiterer Vorteil von Ansible, ist der Umstand dass kein separater eigener Server aufgesetzt werden muss, um Ansible und seine Paybooks zu nutzen. Der (Client-)Rechner, auf dem die Playbooks zur Verfügung stehen, müssen nur die Server, die automatisiert verwaltet und konfiguriert werden sollen, mit Hilfe der SSH erreichen werden können. \\ Ansible arbeitet im Push-Verfahren und benötigt daher neben SSH und Python __keine__ weitere Installation auf den einzelnen Systemen.  
-  - Gegenüber Chef und Puppet ist die einfachere Verwaltung und Verwendung von Ansible, da z.B. keine zusätzliche Software auf dem zu verwaltenden System benötigt wird. Die Definitionen erfolgen im JSON-Format. Zusätzliche optionale Module können aber auch in jeder beliebigen Programmiersprache geschrieben sein. Hauptsächlich werden [[https://yaml.org/|YAML]]-basierten Skripte, die als "Playbooks" bezeichnet werden, zur Orchestrierung der Systeme verwendet. +  - Gegenüber Chef und Puppet ist die einfachere Verwaltung und Verwendung von Ansible, da z.B. keine zusätzliche Software auf dem zu verwaltenden System benötigt wird. Die Definitionen erfolgen im JSON-Format. Zusätzliche optionale Module können aber auch in jeder beliebigen Programmiersprache geschrieben sein. Hauptsächlich werden [[https://yaml.org/|YAML]]-basierten Skripte, die als "Playbooks" bezeichnet werden, zur Orchestrierung der Systeme verwendet. \\ Gegenüber anderen Konfigurationstools wird bei Ansible mit der Beschreibung des gewünschten Sollzustandes verfolgt und nicht die Abarbeitung granularer Einzelschritte z.B. in einem Script beschrieben. Darüber hinaus werden bei Ansible auch immer nur die Arbeitsschritte ab gearbeitet und erledigt, die aktuell nötig sind und nicht stur eine Abfolge von Einzeltätigkeiten perlenkettenmässig abgearbeitet. Aufgaben lassen sich so beliebig oft ausführen, ohne dass negative Seiteneffekte durch mehrmaliges unnötiges Abarbeiten von Aufgaben auftreten werden, 
 ===== Grundlagen ===== ===== Grundlagen =====
 ==== Dokumentation ==== ==== Dokumentation ====
Zeile 20: Zeile 26:
  
 === Gourav Shah - Ansible Playbook Essentials === === Gourav Shah - Ansible Playbook Essentials ===
-Ein weiteres sehr gutes Fachbuch zu Ansible in englischer Sprache ist das Buch **Ansible Playbook Essentials** von **//Gourav Shah//**, erhältlich als **[[https://www.buecher.de/shop/ebooks/ansible-playbook-essentials-ebook-pdf/shah-gourav/products_products/detail/prod_id/56839184/|(eBook, PDF)]]** oder auch als Gedruckte Version im einschlägigem FaAchbuchhandel zu bestellen: (ISBN: 978-1-784-39829-3).+Ein weiteres sehr gutes Fachbuch zu Ansible in englischer Sprache ist das Buch **Ansible Playbook Essentials** von **//Gourav Shah//**, erhältlich als **[[https://www.buecher.de/shop/ebooks/ansible-playbook-essentials-ebook-pdf/shah-gourav/products_products/detail/prod_id/56839184/|(eBook, PDF)]]** oder auch als gedruckte Version im einschlägigem Fachbuchhandel zu bestellen: (ISBN: 978-1-784-39829-3).
 {{ :centos:ansible:ansible-playbook-essentials.png?nolink&250 |Bild: Buchcover Ansible Playbook Essentials von Gourav Shah}} {{ :centos:ansible:ansible-playbook-essentials.png?nolink&250 |Bild: Buchcover Ansible Playbook Essentials von Gourav Shah}}
 +
 +=== Axel Miesen - Ansible für Administratoren und DevOps-Teams ===
 +Das dritte Buch (aktuelle Auflage von August 2020) im Bunde, welches sehr zu empfehlen ist, ist das Buch **Ansible - Das Praxisbuch für Administratoren und DevOps-Teams** von **//Axel Miesen//**, erschienen im Verlag [[https://www.rheinwerk-verlag.de/|Rheinwerk Computing]]. Erhältlich als **[[https://www.buecher.de/shop/server/ansible/miesen-axel/products_products/detail/prod_id/59485549/|(eBook, PDF)]]** oder als gedruckte Version im einschlägigen Fachbuchhandel zu bestellen: (ISBN: 978-3-8362-7660-3).
 +{{ :centos:ansible:ansible-axel-miesen.png?nolink&250 |Bild: Buchcover Ansible für Administratoren und DevOps-Teams vom Axel Miesen}}
  
 === online-Dokumentation === === online-Dokumentation ===
Zeile 760: Zeile 770:
    # ansible --version    # ansible --version
  
-<code>ansible 2.9.2 +<code>ansible 2.9.13 
-  config file = /etc/ansible/ansible.cfg +  config file = /home/django/.ansible.cfg 
-  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'+  configured module search path = ['/home/django/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'
-  ansible python module location = /usr/lib/python3.7/site-packages/ansible+  ansible python module location = /usr/lib/python3.8/site-packages/ansible
   executable location = /usr/bin/ansible   executable location = /usr/bin/ansible
-  python version = 3.7.5 (default, Dec 15 201917:54:26) [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)]</code>+  python version = 3.8.5 (default, Aug 12 202000:00:00) [GCC 10.2.1 20200723 (Red Hat 10.2.1-1)]</code>
  
 Sehen wir uns nun an, wie wir die zuvor gestelle Aufgabe des gleichzeitigen Neustarts von einer Gruppe Server parallelisiert anstoßen können. Im folgenden Beispiel wollen wir in der **Gruppe** **''intranet''** alle Server neu starten und dabei statt der default-mäßigen parallelen Abarbeitung von **5** parallelen Prozessen **15** verwenden. Sehen wir uns nun an, wie wir die zuvor gestelle Aufgabe des gleichzeitigen Neustarts von einer Gruppe Server parallelisiert anstoßen können. Im folgenden Beispiel wollen wir in der **Gruppe** **''intranet''** alle Server neu starten und dabei statt der default-mäßigen parallelen Abarbeitung von **5** parallelen Prozessen **15** verwenden.
Zeile 1077: Zeile 1087:
 ==== RPM-Paket ansible ==== ==== RPM-Paket ansible ====
 Einen Überblick über das Paket kann man mit Hilfe des Befehls **''rpm -qi''** sich anzeigen lassen. Einen Überblick über das Paket kann man mit Hilfe des Befehls **''rpm -qi''** sich anzeigen lassen.
-   # rpm -ai ansible+   # rpm -qi ansible
 <code>Name        : ansible <code>Name        : ansible
-Version     : 2.9.2 +Version     : 2.9.13 
-Release     : 1.fc31+Release     : 1.fc32
 Architecture: noarch Architecture: noarch
-Install Date: Sa 21 Dez 2019 20:38:05 CET+Install Date: Sa 03 Okt 2020 10:41:49 CEST
 Group       : Unspecified Group       : Unspecified
-Size        : 102078689+Size        : 102582504
 License     : GPLv3+ License     : GPLv3+
-Signature   : RSA/SHA256, Mo 09 Dez 2019 18:59:12 CET, Key ID 50cb390b3c3359c4 +Signature   : RSA/SHA256, Fr 04 Sep 2020 00:23:43 CEST, Key ID 6c13026d12c944d0 
-Source RPM  : ansible-2.9.2-1.fc31.src.rpm +Source RPM  : ansible-2.9.13-1.fc32.src.rpm 
-Build Date  : So 08 Dez 2019 21:42:23 CET +Build Date  : Do 03 Sep 2020 02:10:52 CEST 
-Build Host  : buildvm-aarch64-24.arm.fedoraproject.org+Build Host  : buildvm-ppc64le-38.iad2.fedoraproject.org
 Packager    : Fedora Project Packager    : Fedora Project
 Vendor      : Fedora Project Vendor      : Fedora Project