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 [07.11.2022 19:59. ] – [Zusammenfassung] django | linux:ansible:playbook_example_13 [28.11.2022 18:48. ] (aktuell) – Playbook mit Hilfe des GH-Plugin eingebunden. django | ||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
Im Eingangskapitel **[[basics# | Im Eingangskapitel **[[basics# | ||
- | ===== Aufgabenstellung | + | ===== Aufgabenstellung ===== |
Oft steht man vor der Herausforderung, | Oft steht man vor der Herausforderung, | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
Zeile 11: | Zeile 11: | ||
Möchte ein bestehender Admin sein|ihr Passwort oder Schlüssel ändern, kann dies auch zu einer zeitraubenden Tätigkeit ausarten. Was liegt also näher das Anlegen und Löschen der Konten samt Passwörter und Schlüsselmaterial sowie die Pflege dieser Daten mit Hilfe von Ansible zu automatisieren? | Möchte ein bestehender Admin sein|ihr Passwort oder Schlüssel ändern, kann dies auch zu einer zeitraubenden Tätigkeit ausarten. Was liegt also näher das Anlegen und Löschen der Konten samt Passwörter und Schlüsselmaterial sowie die Pflege dieser Daten mit Hilfe von Ansible zu automatisieren? | ||
- | ===== Lösung | + | ===== Lösung ===== |
<WRAP center round tip 80%> | <WRAP center round tip 80%> | ||
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:// | ||
- | <file c++ sudoers.yml> | + | ===== Ausführung ===== |
- | + | ||
- | - name: "Die Gruppe wheel sudo Rechte zuweisen" | + | |
- | ansible.builtin.copy: | + | |
- | content: "# Generated by Ansible, do not edit manually!\n# | + | |
- | dest: / | + | |
- | owner: root | + | |
- | group: root | + | |
- | mode: " | + | |
- | validate: visudo -cf %s | + | |
- | + | ||
- | ...</ | + | |
- | + | ||
- | ===== 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, | ||
Zeile 230: | Zeile 136: | ||
vml000137 | vml000137 | ||
- | ===== Zusammenfassung | + | ===== Zusammenfassung ===== |
<WRAP center round tip 80%> | <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. | 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. |