wiki:ansible
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| wiki:ansible [2024/01/21 22:31] – [System Einrichtung] techguru | wiki:ansible [2025/11/26 23:16] (aktuell) – [System Einrichtung] pulsar | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Ansible ====== | ||
| + | |||
| + | |||
| + | ===== System Einrichtung ===== | ||
| + | |||
| + | Auf dem Ansible Kommando Rechner ist das Paket '' | ||
| + | |||
| + | apt install ansible sshpass | ||
| + | |||
| + | Zuvor wurde ein Passwort Hash z.B. mit Python erzeugt. Wie das funktioniert, | ||
| + | für den neuen zu erstellenden backup Benutzer. :!: Dieser Hash ist im Start-playbook enthalten, daher muss dieser Schritt i.d.R. nicht mehr ausgeführt werden. :!: | ||
| + | |||
| + | Mit '' | ||
| + | |||
| + | Konfigurations Ordner aus Sicherung in das neue Ansible Master System rüber kopieren. Im Start-playbook sollten alle Pfade und Dateien(z.B. ssh-key) zum Konfigurations-Ordner verweisen. In der ansible.cfg auf den Pfad mit Nutzername zur hosts Datei achten. | ||
| + | |||
| + | === Ansible Ersteinrichtung für ein entferntes System === | ||
| + | Folgenden Kommando nur wenn Ansible Ersteinrichtung für ein entferntes System durchgeführt werden soll. Start-playbook auf dem Ansible Master System ausführen für das iglu Remote-System: | ||
| + | |||
| + | ansible-playbook -k -i / | ||
| + | | ||
| + | oder besser die '' | ||
| + | |||
| + | ansible-playbook --limit iglu Start_playbook.yml -k | ||
| + | |||
| + | === Ansible Ersteinrichtung === | ||
| + | Die Angabe des Hostnamen kann weglassen werden wenn im playbook der hostname, z.B. localhost schon bei hosts: drin steht. Da das Playbook aber nicht nur auf dem Ansible Kommando Rechner ausgeführt werden soll sondern für jeden Host eingesetzt wird, steht bei hosts: all. Hier kann man beim Ausführen des Playbooks mit --limit dann angeben auf welchen Host es aktuell ausgeführt werden soll. | ||
| + | |||
| + | ansible-playbook -k --limit iglu start_sshlogin.yml | ||
| + | |||
| + | <code php> | ||
| + | --- | ||
| + | - hosts: all | ||
| + | vars: | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | - name: Gruppe backup erstellen | ||
| + | | ||
| + | name: backup | ||
| + | gid: 7500 | ||
| + | state: present | ||
| + | - name: Nutzer tux erstellen | ||
| + | user: | ||
| + | name: tux | ||
| + | uid: 2121 | ||
| + | groups: adm, sudo, audio, video, plugdev, users, input, netdev, backup, pi | ||
| + | shell: /bin/bash | ||
| + | password: "{{ devops_password }}" | ||
| + | - name: Nutzer backup hinzufügen zu sudoers | ||
| + | copy: | ||
| + | dest: "/ | ||
| + | content: " | ||
| + | - name: SSH public Key hinzufügen | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Nach der Ausführung des '' | ||
| + | |||
| + | Neu: | ||
| + | In das Verzeichnis ''/ | ||
| + | |||
| + | ansible-playbook hauptkonfig.yml | ||
| + | |||
| + | Hier muss auch keine Inventory Datei mit angegeben werden, da diese in der '' | ||
| + | ===== Ansible Einzeiler ===== | ||
| + | |||
| + | Ohne gleich ein Playbook oder eine komplette Role zu erstellen, kann man ansible direkt ausführen und | ||
| + | die entsprechenden Parameter übergeben. | ||
| + | |||
| + | |||
| + | |||
| + | ==== Updates für Suse ==== | ||
| + | |||
| + | ansible localhost -m zypper -a " | ||
| + | |||
| + | |||
| + | ==== Updates für alle Debian Systeme ==== | ||
| + | |||
| + | Alle Rechner im Netzwerk gleichzeitig mit Updates versorgen. Dafür braucht man kein extra Playbook schreiben, hier reicht auch ein Ad-Hoc Kommando. | ||
| + | |||
| + | Hier wird das Ansible '' | ||
| + | |||
| + | ansible all -m shell -a "sudo apt update && sudo apt autoremove && sudo apt upgrade -y" | ||
| + | | ||
| + | Im nächsten Aufruf wird das Ansible '' | ||
| + | |||
| + | ansible all -m apt -a " | ||
| + | | ||
| + | Anzeigen der SCSI Harddisk ID und der dazugehörigen Mountpunkte, | ||
| + | |||
| + | ansible all -i inventories/ | ||
| + | | ||
| + | ==== Nur auf einer Gruppe ==== | ||
| + | |||
| + | Kommando nur auf den Rechnern in einer bestimmten Inventory-Datei '' | ||
| + | |||
| + | ansible all -i inventory-Lager/ | ||
| + | | ||
| + | |||
| + | Playbook für eine sub-Gruppe(hier die Gruppe: jboss) innerhalb einer Inventory-Datei '' | ||
| + | ansible-playbook -i produktion -l jboss playbooks/ | ||
| + | | ||
| + | | ||
| + | ==== Ohne Inventory und zusätzliche Dateien ==== | ||
| + | |||
| + | Beachte das Komma nach dem Hostnamen. Es ist wichtig, da es Ansible signalisiert, | ||
| + | |||
| + | ansible-playbook -i ' | ||
| + | ==== Reboot und Poweroff ==== | ||
| + | |||
| + | Nur den Rechner iglu neu-starten: | ||
| + | |||
| + | ansible iglu -a "/ | ||
| + | | ||
| + | Alle Maschinen ausschalten. Achtung! Auch den Host von wo aus der Kommando ausgeführt wird, wenn in all enthalten: | ||
| + | |||
| + | ansible all -a "/ | ||
| + | |||
| + | |||
| + | |||
| + | ===== Ansible Playbooks ===== | ||
| + | |||
| + | |||
| + | <code php> | ||
| + | --- | ||
| + | # Playbook für die Ersteinrichtung des Systems | ||
| + | # Es wird ein neuer Haupt-Nutzer angelegt und die benötigte Standard-Software installiert. | ||
| + | |||
| + | - hosts: all | ||
| + | vars: | ||
| + | tux_password: | ||
| + | # Um den Abbruch mit " | ||
| + | # Oder man entfernt die Zeile komplett, denn " | ||
| + | gather_facts: | ||
| + | # Mit -k kann das Passwort für dem im Playbook angegebenen Remote Benutzer eingegeben werden. | ||
| + | remote_user: | ||
| + | become: true | ||
| + | tasks: | ||
| + | |||
| + | - name: Nutzer tux - erstellen | ||
| + | user: | ||
| + | name: tux | ||
| + | uid: 1111 | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | - name: NFS-Freigabe mount Verzeichnis - erstelle Mount-Punkt | ||
| + | file: | ||
| + | path: / | ||
| + | state: directory | ||
| + | owner: pi | ||
| + | group: users | ||
| + | mode: ' | ||
| + | |||
| + | - name: Installation - Desktop Standard Pakete | ||
| + | apt: | ||
| + | name: "{{ item }}" | ||
| + | update_cache: | ||
| + | cache_valid_time: | ||
| + | when: ' | ||
| + | loop: | ||
| + | - marble | ||
| + | - pidgin | ||
| + | - wesnoth | ||
| + | |||
| + | - name: De-Installation - Nicht benötigte Pakete werden entfernt | ||
| + | apt: | ||
| + | name: "{{ item }}" | ||
| + | state: absent | ||
| + | loop: | ||
| + | - scratch* | ||
| + | - minecraft-pi | ||
| + | - cups-client | ||
| + | - realvnc-vnc-server | ||
| + | - samba-common | ||
| + | - cifs-utils* | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | <code php> | ||
| + | --- | ||
| + | # Playbook für Icinga2 - Installation aller Monitoring Plugins | ||
| + | # Einrichten des icinga Benutzers | ||
| + | # Einfügen des SSH-Keys | ||
| + | |||
| + | - hosts: monitoring | ||
| + | become: yes | ||
| + | tasks: | ||
| + | | ||
| + | - name: installiere benötigte Pakete | ||
| + | zypper: | ||
| + | name: [' | ||
| + | state: latest | ||
| + | disable_recommends: | ||
| + | notify: enable named | ||
| + | when: (ansible_hostname != ' | ||
| + | | ||
| + | - name: Sicher stellen das group " | ||
| + | group: | ||
| + | name: icinga | ||
| + | gid: 600 | ||
| + | state: present | ||
| + | |||
| + | - name: Erstelle Icinga Benutzer | ||
| + | block: | ||
| + | - user: | ||
| + | name: icinga | ||
| + | state: present | ||
| + | home: / | ||
| + | comment: System Monitoring | ||
| + | shell: /bin/bash | ||
| + | uid: 900 | ||
| + | group: icinga | ||
| + | when: ansible_hostname == ' | ||
| + | |||
| + | - name: Set authorized key taken from file | ||
| + | authorized_key: | ||
| + | user: icinga | ||
| + | state: present | ||
| + | key: "{{ ' | ||
| + | | ||
| + | </ | ||
| + | |||
| + | ===== Module ===== | ||
| + | |||
| + | Mit copy Modul eine leer Datei erstellen, wenn noch nicht existent. | ||
| + | < | ||
| + | - name: sicherstellen das Log-Dateien existieren | ||
| + | copy: | ||
| + | content: "" | ||
| + | dest: / | ||
| + | force: no | ||
| + | group: hw | ||
| + | owner: ansible | ||
| + | mode: 0664 | ||
| + | </ | ||
| + | |||
wiki/ansible.1705872661.txt.gz · Zuletzt geändert: 2024/01/21 22:31 von techguru
