Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
ansible_new [2024/11/10 13:17] root [ansible-doc] |
ansible_new [2024/11/13 18:47] (aktuell) root [Rescue] |
||
|---|---|---|---|
| Zeile 258: | Zeile 258: | ||
| + | ====== Handlers ====== | ||
| + | |||
| + | * ermöglichen Aktionen nur auszuführen wenn ein Task in einer Aktion resultiert | ||
| + | * also wenn der Zustand den der Task erwartet nicht gegeben ist | ||
| + | * werden erst nach dem **alle** Tasks ausgeführt wurden ausgeführt | ||
| + | * Reihenfolge ist wie sie in der handlers-Sektion stehen | ||
| + | * Jeder Handler wird pro System maximal 1 mal ausgeführt | ||
| + | |||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My Play | ||
| + | hosts: hosta | ||
| + | force_handlers: | ||
| + | tasks: | ||
| + | - name: Get kernel | ||
| + | notify: Reboot after kernel installation | ||
| + | ansible.builtin.apt: | ||
| + | name: linux-image-amd64 | ||
| + | state: latest | ||
| + | | ||
| + | handlers: | ||
| + | - name: Reboot after kernel installation | ||
| + | ansible.builtin.reboot: | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Es wird geprüft ob die letztet Version des Paketes linux-image-amd64 installiert ist | ||
| + | * wenn nicht wird er installiert | ||
| + | * Wenn **alle** Tasks abgearbeitet sind wird die Handler-Sektion der Reihe nach abgearbeitet | ||
| + | * der "get Kernel" | ||
| + | |||
| + | |||
| + | * force_handlers -> Wenn true werden handler auch ausgeführt obwohl ein nachfolgender Task im play fehlgeschlagen ist. | ||
| + | * Hat task A ein Notify und Task B schlägt fehl wird normalerweise der Handler von A nicht ausgeführt (trotz Notify). force_handlers sorgt dafür das Handler auch ausgeführt werden (die die eine Notification bis zu dem Zeitpunkt haben) wenn nicht alle Tasks erfolgreich sind | ||
| + | * notify -> sendet eine Nachricht an einen Handler wenn der Task tatsächlich etwas ändert (state changed), die Bedingung die der Task sicherstellen soll also nicht gegeben war | ||
| + | * state: latest stellt sicher das die letzte Version eines Paketes installiert ist | ||
| + | * handlers: Liste von Modulen die aufgerufen werden wenn ein Task eine Notification für sie gesendet hat. | ||
| + | * Die Liste wird erst **nach** dem **alle** Tasks im Task-Attribute des Plays abgearbeitet sind aufgerufen | ||
| + | * Wenn es also 2 Tasks im Play gibt und der erste eine Notification an einen Handler sendet, wird erst noch Task 2 abgearbeitet, | ||
| + | * Handler werden nur für die Hosts aufgerufen wo ein Task " | ||
| + | * Handler werden nach der Reihenfolge abgearbeitet wie sie in der handler-Sektion stehen | ||
| + | * aber jeweils nur einmal pro System (auch wenn mehrere Tasks für das gleiche System und den gleichen Handler Notifies gesendet haben) | ||
| + | |||
| + | |||
| + | ====== When ====== | ||
| + | |||
| + | * Bedingung | ||
| + | * Block oder Task wird nur ausgeführt wenn die Bedingung erfüllt ist | ||
| + | * Bedingung ist ein Jinja-2-Ausdruck, | ||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | tasks: | ||
| + | - name: First task | ||
| + | hosts: hostA | ||
| + | when: ansible_facts[' | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | </ | ||
| + | |||
| + | * Führt den Task nur aus wenn die os_family in den Ansible-Facts Debian ist | ||
| + | * kann Sinn machen wenn man zum Beispiel verschiedene Systeme mit verschiedenen Betriebssystemen hat und deswegen verschiedene Module verwenden muss | ||
| + | |||
| + | |||
| + | ====== Blocks ====== | ||
| + | |||
| + | * gruppieren Tasks | ||
| + | * Statements des Blocks werden vererbt an die Tasks -> z.B. Become | ||
| + | * when-Statements gelten für den gesamten Block usw. | ||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks: | ||
| + | - name: First Block | ||
| + | when: ansible_facts[' | ||
| + | become: true | ||
| + | become_method: | ||
| + | block: | ||
| + | - name: First task | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | </ | ||
| + | |||
| + | * die Tasks im Block werden nur ausgeführt wenn die os_family==" | ||
| + | * when-Statement auf Block-Level | ||
| + | * Alle Tasks im Block werden mit root-Rechten ausgeführt | ||
| + | * become: true und become_method: | ||
| + | * Tasks in einem Block erben die Statements auf Blockebene | ||
| + | |||
| + | |||
| + | ===== Rescue ===== | ||
| + | |||
| + | * Wird ausgeführt wenn einer der Tasks im Block fehlschlägt | ||
| + | * wenn ein Task fehlschlägt werden die nachfolgenden Task normalerweise nicht mehr ausgeführt | ||
| + | * dient zum Beispiel um Aktionen rückgängig zu machen und das System nicht halbkonfiguriert zurückzulassen | ||
| + | * rescue-Attribute enthält Liste von Tasks | ||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks: | ||
| + | - name: First Block | ||
| + | when: ansible_facts[' | ||
| + | become: true | ||
| + | become_method: | ||
| + | block: | ||
| + | - name: First task | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | rescue: | ||
| + | - name: Remove the vim package | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: absent | ||
| + | purg: true | ||
| + | | ||
| + | </ | ||
| + | |||
| + | * Im Falle eines Fehlers in block: würde das vim-Paket in rescue-Attribut deinstalliert | ||
| + | |||
| + | |||
| + | ===== Always ===== | ||
| + | |||
| + | * wird immer ausgeführt | ||
| + | * egal ob die Tasks im Block fehlschlagen oder erfolgreich sind | ||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks: | ||
| + | - name: First Block | ||
| + | when: ansible_facts[' | ||
| + | become: true | ||
| + | become_method: | ||
| + | block: | ||
| + | - name: First task | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | always: | ||
| + | - name: Clear retrieved packages | ||
| + | ansible.builtin.apt: | ||
| + | clean: true | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Task "Clear retrieved packages" | ||
| + | |||
| + | ====== Tags ====== | ||
| + | |||
| + | * Ermöglichen das ausführen nur bestimmter Teile | ||
| + | * können auf Handler, Blocks, Plays, Tasks, Roles, includes und imports angewendet werden | ||
| + | |||
| + | Folgende Werte sind **reserviert**/ | ||
| + | |||
| + | * Keyword tags | ||
| + | * Wert ist ein einzelnes Keyword oder eine Liste von Keywords | ||
| + | |||
| + | ^Tag ^Beschreibung ^ | ||
| + | |never|Führe die Statements niemals aus. \\ \\Es sei denn " | ||
| + | |always | führt den Statements immer aus. \\ \\ Egal welcher Tag auf der Kommandozeile angegeben wurde. \\ | ||
| + | |kein Tag|Wird ausgeführt wenn keine Tags auf der Kommandozeile ausgewählt wurden oder all oder untagged| | ||
| + | |Benutzerspezifischer Tag|Wird ausgeführt wenn der | ||
| + | |||
| + | |||
| + | **ansible-playbook** hat folgende Parameter für Tags: | ||
| + | |||
| + | * < | ||
| + | * < | ||
| + | * definiert eine Liste von Tags die ausgeführt werden soll | ||
| + | * nur statements die diesen Tag haben werden ausgeführt (oder wenn der Tag " | ||
| + | * < | ||
| + | * < | ||
| + | * definiert eine Liste von Tags die geskipped (übersprungen) werden sollen | ||
| + | * alle Tags (und Tasks die keinen Tag haben) die nicht in der Liste stehen werden ausgeführt | ||
| + | * wird < | ||
| + | * hat ein Task ein Tag welches im tags-Parameter angegeben wurde und ein Tag welches in skip-tags steht wird der Task **nicht** ausgeführt | ||
| + | * -> skip-tags hat Vorrang | ||
| + | |||
| + | Folgende Tags gibt es: | ||
| + | |||
| + | ^Tag ^Beschreibung ^ | ||
| + | |Never|Kann in < | ||
| + | |all|Alle Tags, inkl. Task die keine Tags haben. \\ Aber nicht die mit " | ||
| + | |tagged|Alle Tasks aus die ein tag haben. \\ Außer mit " | ||
| + | |untagged|Nur Tasks die keinen Tag haben| | ||
| + | |Custom-Tag|Ein beliebiges Tag| | ||
| + | |ohne < | ||
| + | |||
| + | |||
| + | **Einfaches Tag** | ||
| + | |||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks | ||
| + | - name: Install vim | ||
| + | tags: | ||
| + | - vim | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | </ | ||
| + | |||
| + | |||
| + | Task " | ||
| + | * kein Tag angegeben wurde | ||
| + | * < | ||
| + | * < | ||
| + | * < | ||
| + | |||
| + | |||
| + | ** Tag + never:** | ||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks | ||
| + | - name: Install vim | ||
| + | tags: | ||
| + | - vim | ||
| + | - never | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | </ | ||
| + | |||
| + | |||
| + | Task " | ||
| + | * < | ||
| + | * wegen " | ||
| + | * wenn kein tag-Option angegeben wurde | ||
| + | * wenn " | ||
| + | * wenn " | ||
| + | |||
| + | |||
| + | |||
| + | ** always:** | ||
| + | <sxh yaml> | ||
| + | - name: My first play | ||
| + | hosts: myhosts | ||
| + | tasks | ||
| + | - name: Install vim | ||
| + | tags: | ||
| + | - always | ||
| + | ansible.builtin.apt: | ||
| + | name: neovim | ||
| + | state: latest | ||
| + | update_cache: | ||
| + | - name: Make a temporary file | ||
| + | ansible.builtin.tempfile: | ||
| + | prefix: myfile | ||
| + | </ | ||
| + | |||
| + | Task " | ||
| + | Wir nur nicht ausgeführt wenn < | ||
| ====== Modules ====== | ====== Modules ====== | ||
| Zeile 264: | Zeile 543: | ||
| * sie prüfen vorher ob der Status den sie herstellen sollen schon gegeben sind und tun dann nichts | * sie prüfen vorher ob der Status den sie herstellen sollen schon gegeben sind und tun dann nichts | ||
| * letzten Endes stellen sie sicher das ein bestimmter Zustand gegeben ist (zum Beispiel ein Dienst gestartet) | * letzten Endes stellen sie sicher das ein bestimmter Zustand gegeben ist (zum Beispiel ein Dienst gestartet) | ||
| + | |||
| + | |||
| + | * können hier gefunden werden https:// | ||
| + | * Dokumentation findet man hier: https:// | ||
| + | * Version in URL beachten | ||
| Zeile 409: | Zeile 693: | ||
| * Module sind eine Unterkategorie von Plugins | * Module sind eine Unterkategorie von Plugins | ||
| * befinden sich in Collections und können über ansible-galaxy installiert werden | * befinden sich in Collections und können über ansible-galaxy installiert werden | ||
| + | |||
| + | * können hier gefunden werden https:// | ||
| + | * Dokumentation findet man hier: https:// | ||
| + | * Version in URL beachten | ||