Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| linux:ansible:playbook_example_13 [13.10.2022 18:03. ] – [Ausführung] django | linux:ansible:playbook_example_13 [28.11.2022 18:48. ] (aktuell) – Playbook mit Hilfe des GH-Plugin eingebunden. django | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ====== Ansible - weiterte | + | ====== Ansible - weitere |
| {{: | {{: | ||
| Zeile 50: | Zeile 50: | ||
| $6$n9UE0JVV7T.nzFJOdSY1dHDEsbfY3$0SPNKmewfaQ0z5thaRMrrrI9Uig.nzFJOdSY1erIZbw5yzDqeCg4S2oXa8zn2jEf9KDfjg31 | $6$n9UE0JVV7T.nzFJOdSY1dHDEsbfY3$0SPNKmewfaQ0z5thaRMrrrI9Uig.nzFJOdSY1erIZbw5yzDqeCg4S2oXa8zn2jEf9KDfjg31 | ||
| - | Ferner benötigen wir noch den SSH-Publickey den wir uns ebenso wie das gerade erstellte gehashte Passwort von unseren | + | Ferner benötigen wir noch den SSH-Publickey den wir uns ebenso wie das gerade erstellte gehashte Passwort von unseren |
| === Inventory Daten für unsere Admins === | === Inventory Daten für unsere Admins === | ||
| Zeile 90: | Zeile 90: | ||
| Das Playbook an sich ist relativ unspektakulär, | Das Playbook an sich ist relativ unspektakulär, | ||
| $ vim ~/ | $ vim ~/ | ||
| - | <file c++ admin_updates.yml> | ||
| - | # Ansible Playbook zum Anlegen, Aktualisieren und Löschen der Administratoren, | ||
| - | # zugehörigen Passwörter und SSH-Schlüssel, | ||
| - | # mit dem state " | ||
| - | # Admins mit dem state " | ||
| - | # dem Inventory entfernt werden. | ||
| - | # Aufruf via für alles Hosts: | ||
| - | # $ ansible-playbook playbooks/ | ||
| - | # bzw. für einzelne Hosts: | ||
| - | # $ ansible-playbook playbooks/ | ||
| - | - name: admin_updates.yml | + | {{gh> https:// |
| - | hosts: DMZ # Host-Gruppe für den das Playbook gelten soll | + | |
| - | roles: | ||
| - | - role: admins | ||
| - | tags: admins | ||
| - | ... | ||
| - | </ | ||
| === Rolle und Tasks === | === Rolle und Tasks === | ||
| Zeile 116: | Zeile 100: | ||
| Nun legen wir unseren Main-Task an. | Nun legen wir unseren Main-Task an. | ||
| $ vim ~/ | $ vim ~/ | ||
| - | + | {{gh> https://gitlab.nausch.org/ | |
| - | <file c++ main.yml>--- # User unter Archlinux erstellen | + | |
| - | - include: useranlage.yml # Admin-Gruppe und -User pflegen | + | |
| - | - include: sudoers.yml # Admins der Gruppe wheel sudoers zuweisen | + | |
| - | ... | + | |
| - | </ | + | |
| Was nun noch fehlt sind die beiden eigentlichen Tasks. Als erstes legen wir den Task an, mit Hilfe dessen die jeweilige(n) Admin-Gruppe(n) und User gepflegt werden. | Was nun noch fehlt sind die beiden eigentlichen Tasks. Als erstes legen wir den Task an, mit Hilfe dessen die jeweilige(n) Admin-Gruppe(n) und User gepflegt werden. | ||
| $ vim ~/ | $ vim ~/ | ||
| + | {{gh> https:// | ||
| - | <file c++ useranlage.yml> | + | Zu guter Letzt legen wir noch den Task an, damit die Admins, die Mitglied |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.group: | + | |
| - | gid: '{{ item.ids }}' | + | |
| - | name: '{{ item.name }}' | + | |
| - | state: present | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.user: | + | |
| - | append: true | + | |
| - | comment: '{{ item.user }}' | + | |
| - | create_home: | + | |
| - | force: true | + | |
| - | state: '{{ item.state }}' | + | |
| - | group: '{{ item.name }}' | + | |
| - | groups: '{{ item.groups }}' | + | |
| - | name: '{{ item.name }}' | + | |
| - | password: '{{ item.pwd }}' | + | |
| - | shell: '{{ item.shell }}' | + | |
| - | uid: '{{ item.ids }}' | + | |
| - | remove: true | + | |
| - | with_items: "{{ linux_admins }}" | + | |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.group: | + | |
| - | gid: '{{ item.ids }}' | + | |
| - | name: '{{ item.name }}' | + | |
| - | state: '{{ item.state }}' | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.file: | + | |
| - | path: /home/{{ item.name }}/.ssh | + | |
| - | state: directory | + | |
| - | owner: '{{ item.name }}' | + | |
| - | group: '{{ item.name }}' | + | |
| - | mode: ' | + | |
| - | when: ' item.state == " | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.copy: | + | |
| - | dest: /home/{{ item.name }}/ | + | |
| - | content: | | + | |
| - | {{ item.key }} | + | |
| - | owner: '{{ item.name }}' | + | |
| - | group: '{{ item.name }}' | + | |
| - | mode: ' | + | |
| - | when: ' item.state == " | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | - name: " | + | |
| - | ansible.builtin.file: | + | |
| - | path: /home/{{ item.name }}/.ssh | + | |
| - | state: absent | + | |
| - | when: ' item.state == " | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | ...</ | + | |
| - | + | ||
| - | Zu guter Letzt legen wir noch den Task an, damit die Admins, die Miitglied | + | |
| $ vim ~/ | $ vim ~/ | ||
| - | + | {{gh> https://gitlab.nausch.org/django/example_13/-/ | |
| - | <file c++ sudoers.yml>--- | + | |
| - | + | ||
| - | - name: "Die Gruppe wheel sudo Rechte zuweisen" | + | |
| - | ansible.builtin.copy: | + | |
| - | content: "# Generated by Ansible, do not edit manually!\n# | + | |
| - | dest: /etc/sudoers.d/10_passwd_sudo_wheel | + | |
| - | owner: root | + | |
| - | group: root | + | |
| - | mode: " | + | |
| - | validate: visudo | + | |
| - | + | ||
| - | ...</ | + | |
| ===== Ausführung ===== | ===== Ausführung ===== | ||
| - | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt werden. Somit können neue Admins hinzugefügt, | + | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt werden. Somit können neue Admins hinzugefügt, |
| Folgende Schritte werden also mit Hilfe des Playbooks abgearbeitet: | Folgende Schritte werden also mit Hilfe des Playbooks abgearbeitet: | ||
| Zeile 214: | Zeile 120: | ||
| - SSH-Key des Admins hinterlegen | - SSH-Key des Admins hinterlegen | ||
| - SSH-Client-Verzeichnis entfernen, sofern der User zum Löschen gekennzeichnet ist mit **'' | - SSH-Client-Verzeichnis entfernen, sofern der User zum Löschen gekennzeichnet ist mit **'' | ||
| - | - Der Gruppe wheel sudo Rechte zuweisen. | + | - Der Gruppe |
| Entscheidend für das Anlegen bzw. Löschen eines Admins ist die Array-Variable **'' | Entscheidend für das Anlegen bzw. Löschen eines Admins ist die Array-Variable **'' | ||
| Zeile 230: | Zeile 136: | ||
| vml000137 | vml000137 | ||
| + | ===== Zusammenfassung ===== | ||
| + | <WRAP center round tip 80%> | ||
| + | Wir haben nun eine standardisiertes Verfahren für die Pflege unserer Admins, so dass aufwändiges manuelles Anlegen oder Löschen von Admin-Konten nicht mehr wichtige Ressourcen auffrisst. Auch können so unsere Admins ihre Passwörter und|oder SSH-Key sehr einfach auf Dutzenden oder vielen Hunderten Servern austauschen und aktualisieren. | ||
| + | </ | ||
| + | ====== Links ====== | ||
| + | * **[[detail|zurück zum Kapitel " | ||
| + | * **=> [[playbook_example_10|weiter zum Kapitel " | ||
| + | * **[[start|Zurück zur " | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||