centos:ansible:ffmuc-rpb4-ol

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
Nächste ÜberarbeitungBeide Seiten der Revision
centos:ansible:ffmuc-rpb4-ol [10.03.2020 19:35. ] – [Bsp. 1 : raspi_offloader_menu.yml] djangocentos:ansible:ffmuc-rpb4-ol [05.09.2020 16:56. ] – [Verzeichnis-Struktur] django
Zeile 69: Zeile 69:
 Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**. Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**.
    * RPM basierende Systeme: <code> # dnf install ansible</code> bzw. <code> # yum install ansible</code>    * RPM basierende Systeme: <code> # dnf install ansible</code> bzw. <code> # yum install ansible</code>
-   * DEB basierende Systeme: <code> # apt get install ansible</code>+   * DEB basierende Systeme: <code> # apt install ansible</code>
  
 ==== Einrichten der eigenen Ansible-Umgebung ==== ==== Einrichten der eigenen Ansible-Umgebung ====
Zeile 83: Zeile 83:
         └── Raspbian</code>         └── Raspbian</code>
  
 +/*
 +Gemäß **[[http://docs.ansible.com/ansible/latest/playbooks_best_practices.html|Ansible's Best Practices]]** gibt es durchaus einige Möglichkeiten wie man seine Playbooks organisiert. In aller Regel wird man hier die eigenen individuellen Bedürfnisse (seiner Unternehmung) vornan stellen. 
 +
 +<WRAP center round tip 90%>
 +Jedoch empfiehlt es sich durchaus auf Empfohlenes zurückzugreifen! So empfiehlt es sich zum Beispiel auch, Rollen anstelle von Aufgaben zu verwenden, da dies wesentlich bei der Flexibilität und besseren Organisation der eigenen Playbooks/Codes helfen!
 +</WRAP>
 +
 +Ansible bietet **[[https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#content-organization|zwei Beispiele]]** für Verzeichnis-Layouts. Wir werden im folgen Beispiel uns eine Umgebung aufbauen, in der unser Inventory, also unsere Hosts und Nodes, in mehreren **''groups''** und **''childs''** aufteilen.
 +
 +Mit dieser Struktur sind wir dann in der Lage jede Inventardatei mit ihrer **''group_vars''** und **''host_vars''** in ein separates Verzeichnis zu packen. Fernen können wir so einfach neue Rollen **''roles''**erzeugen, in dem wir dann einfach die bereits vorgefertigte Rollenvorlage **''common''** kopieren.
 +
 +Werfen wir also einfach mal auf die beschrieben Verzeichnisstruktur einen genaueren Blick. Die entsprechende Verwendung der einzelnen Verzeichnisse und DAteien ist in der Aufstellung entsprechend angegeben.
 +<code>ansible/
 +├── filter_plugins                 # (optionales) Verzeichnis für individuelle filter plugins
 +├── library                        # (optionales) Verzeichnis für benutzerdefinierte Module
 +├── module_utils                   # (optionales) Verzeichnis für benutzerdefinierte module_utils zur Unterstützung von Modulen
 +
 +├── inventories                    # Verzeichnis für die einzelnen (unterschiedlichen) Invenory
 +│   ├── production                 # Verzeichnis für die Hosts aus der Gruppe production
 +│   │   ├── hosts.yml              # YML-Datei mit den Host-Definitionen aus der Gruppe production
 +│   │   ├── group_vars             # Verzeichnis für die Gruppenspezifischen Variablen der Gruppe production
 +│   │   └── host_vars              # Verzeichnis für die Hostspezifischen Variablen der Gruppe production
 +│   │    
 +│   └── staging                    # Verzeichnis für die Hosts aus der Gruppe staging
 +│       ├── hosts.yml              # YML-Datei mit den Host-Definitionen aus der Gruppe production
 +│       ├── group_vars             # Verzeichnis für die Gruppenspezifischen Variablen der Gruppe 
 +│       └── host_vars              # Verzeichnis für die Hostspezifischen Variablen der Gruppe production
 +
 +├── roles                          # Verzeichnis für die einzelnen (unterschiedlichen) Rollen
 +│   └── common                     # Verzeichnis "role" common mit seinen entsprechenden Definitionen - Vorlage zum Kopieren
 +│       ├── defaults               # Verzeichnis "defaults"
 +│       │   └── main.yml           # Standardvariablen mit niedrigerer Priorität für diese Rolle
 +│       ├── files                  # Verzeichnis "files"
 +│       │   └── main.yml           # (Skript-)Dateien zur Verwendung als Kopier- bzw. Script-Rressource
 +│       ├── handlers               # Verzeichnis "handlers"
 +│       │   └── main.yml           # Datei mit den Definitionen zu den rollenspezifischen "handlers"
 +│       ├── library                # Verzeichnis für benutzerdefinierte Module einer der Rolle (role) "common"
 +│       ├── lookup_plugin          # Verzeichnis für weitere Arten von Plugins, wie in diesem Fall "lookup"
 +│       ├── meta                   # Verzeichnis "meta" für Rollenspezifische Definitionen/Abhängigkeiten
 +│       │   └── main.yml           # Datei mit Rollenspezifischen Definitionen
 +│       ├── module_utils           # Verzeichnis "module_utils", die benutzerdefinierte module_utils der Rollen enthalten könnte
 +│       ├── tasks                  # Verzeichnis "tasks" für kleinere Aufgabendateien
 +│       │   └── main.yml           # Datei für kleinere Aufgaben, falls diese benötigt werden würden 
 +│       ├── templates              # Verzeichnis mit den Templates
 +│       │   └── main.j2            # Template-Datei mit dem Dateisuffix/-Ende .j2
 +│       └── vars                   # Verzeichnis "vars", mit den zu dieser Rolle zugeordneten Variablen
 +│           └── main.yml           # Datei mit den Rollenspezifischen Variablen
 +
 +└── site.yml                       # master playbook
 +</code>
 +
 +Um dieses Verzeichnis-Layout einfach und schnell auf den Weg zu bringen, verwenden wir die nachfolgend gezeigten zwei Befehle bzw. genauer gesagt die beiden Befehlskette:
 +   $ mkdir -p ~/ansible/inventories/{production,staging}/{group_vars,host_vars} \
 +              ~/ansible/{library,module_utils,filter_plugins} \
 +              ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta,library,module_utils,lookup_plugin}
 +
 +   $ touch    ~/ansible/inventories/{production,staging}/hosts.yml \
 +              ~/ansible/site.yml \
 +              ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml
 +*/
 === Ansible-Konfigurationsdatei === === Ansible-Konfigurationsdatei ===
 Als nächstes kopieren wir uns die Vorlage-Konfiguratinsdatei aus dem Verzeichnis **''/etc/ansible/''** in unser Homeverzeichnis. Als nächstes kopieren wir uns die Vorlage-Konfiguratinsdatei aus dem Verzeichnis **''/etc/ansible/''** in unser Homeverzeichnis.
Zeile 139: Zeile 199:
   * {{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz}}((Version v1 vom 14.02.2020))   * {{:centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz|ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v1.tar.gz}}((Version v1 vom 14.02.2020))
  
-   $ wget https://wiki.mailserver.guru/lib/exe/fetch.php/centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz \ +   $ wget 
-          -O ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.tar.gz+         https://wiki.mailserver.guru/lib/exe/fetch.php/centos:ansible:ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v2.tar.gz \ 
 +         -O ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.tar.gz
  
 Anschließend entpacken wir es an Ort und Stelle. Anschließend entpacken wir es an Ort und Stelle.