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 [2024/09/06 12:44] (aktuell) – [Nur auf einer Gruppe] techguru | ||
---|---|---|---|
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. | ||
+ | |||
+ | === 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 | ||
+ | |||
+ | |||
+ | Alt: | ||
+ | Ausserdem ist die '' | ||
+ | Es ist darauf zu achten, dass die Berechtigungen für ''/ | ||
+ | |||
+ | |||
+ | |||
+ | ===== 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