Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
linux:ansible:playbook_example_13 [12.10.2022 20:22. ] – [Inventory-Hülle] django | linux:ansible:playbook_example_13 [28.11.2022 17:37. ] – 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 85: | Zeile 85: | ||
==== Playbook mit zugehörigen Rollen ==== | ==== Playbook mit zugehörigen Rollen ==== | ||
+ | Hatten wir das **[[https:// | ||
+ | === Playbook === | ||
+ | Das Playbook an sich ist relativ unspektakulär, | ||
+ | $ vim ~/ | ||
- | ===== Ausführung ===== | + | {{gh> https:// |
- | FIXME | + | === Rolle und Tasks === |
+ | Bevor wir unsere Rolle **'' | ||
+ | $ cp -avr ~/ | ||
+ | Nun legen wir unseren Main-Task an. | ||
+ | $ vim ~/ | ||
- | Für die Grundkonfiguration in der Basisausführung der Ansible-Umgebung, | + | <file c++ main.yml>--- # User unter Archlinux erstellen |
- | + | - include: useranlage.yml # | |
- | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt werden. Bei Bedarf ist als also jederzeit ohne grossen Aufwand möglich den Ansible-Controll-Node neu aufzusetzen und das System für spätere Playbook-Rollouts vorzubereiten, | + | - include: sudoers.yml # Admins der Gruppe |
- | + | ... | |
- | Folgende Schritte sollen von dem playbook abgearbeitet werden: | + | |
- | - Kopieren der Ansible-Konfigurationsdatei / | + | |
- | - Anpassen, sprich konfigurieren der individuellen Ansible Umgebung. | + | |
- | - Ansible Directory Layout anlegen | + | |
- | + | ||
- | Schliesslich wollen wir unsere Zeit als Admin ja auch sinnvoll nutzen und mit möglichst geringen Aufwand zu Ziel kommen. | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | $ ansible-vault edit inventories/ | + | |
- | <file c++ admins> | + | |
- | - user : Michael Nausch | + | |
- | name : django | + | |
- | groups : wheel | + | |
- | ids : 1000 | + | |
- | shell : /bin/bash | + | |
- | state : present | + | |
- | pwd : $6$QYCbUeY2/ | + | |
- | key : ssh-ed25519 AAAAC3N1NTE5A0aTHP001zaC1lZDI1NTE5AAAAINPs/ | + | |
- | - user : Christoph Leichi | + | |
- | name : rookie | + | |
- | groups : wheel | + | |
- | | + | |
- | shell : /bin/bash | + | |
- | state : present | + | |
- | pwd : $6$n9UE0JVV7T.nzFJOdSY1dHDEsbfY3$0SPNKmewfaQ0z5thaRMrrrI9Uig.nzFJOdSY1erIZbw5yzDqeCg4S2oXa8zn2jEf9KDfjg31 | + | |
- | key : ssh-ed25519 AAAAC3NzaqK6Pb38bv0oM9fw0C1lZDI1NTE5AAAAIDo46Pb38bv0oM9fmgM6byylc0815 rookie@nausch.org | + | |
- | - user : Oliver Gewinnbringer | + | |
- | name : oliver | + | |
- | groups : wheel | + | |
- | ids : 1002 | + | |
- | shell : /bin/bash | + | |
- | state : absent | + | |
- | pwd : $6$nJVSYV9J17.SY1v0oM9fow8Do46dHDEsbfY3$0SPNKmewfaQ0z5tsafZi3haRMrrrI9Uig.OdSY1e6dHDEsbfY3$rI51ewfaQ0z5th | + | |
- | key : ssh-ed25519 AAAAK6Pb38bv0oM9fw8DoOdSY1er4b38bNzaqK6Pb38bv0oM9fw01erIZbw5yzDqeCC5 oliver@nausch.org | + | |
</ | </ | ||
+ | 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 ~/ | ||
- | + | <file c++ useranlage.yml>--- | |
- | <code>--- | + | |
- name: " | - name: " | ||
Zeile 188: | Zeile 160: | ||
group: '{{ item.name }}' | group: '{{ item.name }}' | ||
mode: ' | mode: ' | ||
- | when: ' item.state == " | ||
- | with_items: '{{ linux_admins }}' | ||
- | |||
- | - name: "VIM Konfig ablegen" | ||
- | ansible.builtin.copy: | ||
- | src: files/vimrc | ||
- | dest: /home/{{ item.name }}/.vimrc | ||
- | owner: '{{ item.name }}' | ||
- | group: '{{ item.name }}' | ||
- | mode: ' | ||
- | when: ' item.state == " | ||
- | with_items: '{{ linux_admins }}' | ||
- | |||
- | - name: " | ||
- | ansible.builtin.copy: | ||
- | src: files/ | ||
- | dest: /home/{{ item.name }}/.bashrc | ||
- | owner: '{{ item.name }}' | ||
- | group: '{{ item.name }}' | ||
- | mode: ' | ||
- | when: ' item.state == " | ||
- | with_items: '{{ linux_admins }}' | ||
- | |||
- | - name: " | ||
- | ansible.builtin.copy: | ||
- | src: files/ | ||
- | dest: /home/{{ item.name }}/ | ||
- | owner: '{{ item.name }}' | ||
- | group: '{{ item.name }}' | ||
- | mode: ' | ||
- | when: ' item.state == " | ||
- | with_items: '{{ linux_admins }}' | ||
- | |||
- | - name: " | ||
- | ansible.builtin.copy: | ||
- | src: files/ | ||
- | dest: /home/{{ item.name }}/ | ||
- | owner: '{{ item.name }}' | ||
- | group: '{{ item.name }}' | ||
- | mode: ' | ||
when: ' item.state == " | when: ' item.state == " | ||
with_items: '{{ linux_admins }}' | with_items: '{{ linux_admins }}' | ||
Zeile 238: | Zeile 170: | ||
with_items: '{{ linux_admins }}' | with_items: '{{ linux_admins }}' | ||
- | ... | + | ...</ |
- | </code> | + | |
+ | Zu guter Letzt legen wir noch den Task an, damit die Admins, die Miitglied der Gruppe **'' | ||
+ | $ vim ~/ | ||
+ | |||
+ | <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/ | ||
+ | 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, | ||
+ | |||
+ | Folgende Schritte werden also mit Hilfe des Playbooks abgearbeitet: | ||
+ | - Sicherstellen dass die Gruppen für Admin-User existieren. | ||
+ | - Sicherstellen dass die Admin-User existieren. | ||
+ | - Gruppe entfernen, sofern der User zum Löschen gekennzeichnet ist mit **'' | ||
+ | - SSH-Client-Verzeichnis anlegen | ||
+ | - SSH-Key des Admins hinterlegen | ||
+ | - SSH-Client-Verzeichnis entfernen, sofern der User zum Löschen gekennzeichnet ist mit **'' | ||
+ | - Der Gruppe **'' | ||
+ | |||
+ | Entscheidend für das Anlegen bzw. Löschen eines Admins ist die Array-Variable **'' | ||
+ | |||
+ | Haben wir die Daten in unserem Vault entsprechend aktualisiert können wir, wie im Playbook vermerkt, das Playbook wie gewohnt aufrufen. | ||
+ | Aufruf via für alles Hosts: | ||
+ | $ ansible-playbook playbooks/ | ||
+ | bzw. für einzelne Hosts: | ||
+ | $ ansible-playbook playbooks/ | ||
+ | |||
+ | Interessiert uns lediglich die erfolgreiche Abarbeitung unseres Playbook-Aufrufs können wir dies z.B. beim Host mit dem Namen **'' | ||
+ | $ ansible-playbook playbooks/ | ||
+ | |||
+ | PLAY RECAP ******************************************************************************************************** | ||
+ | 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:// |