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 [12.10.2022 20:20. ] – [Inventory Daten für unsere Admins] 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 32: | Zeile 32: | ||
| Dort legen wir als erstes mal eine Hülle für die weitere Bearbeitung an. | Dort legen wir als erstes mal eine Hülle für die weitere Bearbeitung an. | ||
| <file c++ admins> | <file c++ admins> | ||
| - | - user : | + | - user : |
| - | name : | + | name : |
| groups : wheel | groups : wheel | ||
| - | ids : | + | ids : 1000 |
| shell : /bin/bash | shell : /bin/bash | ||
| - | state : present | + | state : present |
| - | pwd : | + | pwd : <-- Ergebnis: openssl passwd -6 --> |
| - | key : | + | key : ssh-key |
| + | | ||
| </ | </ | ||
| Zeile 49: | 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 84: | 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 ~/ | ||
| + | {{gh> https:// | ||
| - | Für die Grundkonfiguration in der Basisausführung der Ansible-Umgebung, | + | 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 ~/ | ||
| + | {{gh> https:// | ||
| - | 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 | + | Zu guter Letzt legen wir noch den Task an, damit die Admins, die Mitglied der Gruppe **'' |
| + | $ vim ~/ | ||
| + | {{gh> https:// | ||
| - | Folgende Schritte sollen von dem playbook abgearbeitet | + | ===== Ausführung ===== |
| - | - Kopieren der Ansible-Konfigurationsdatei / | + | Mit Hilfe dieses Playbooks können alle erforderlichen Konfigurationsschritte reproduzierbar und beliebig oft abgesetzt |
| - | - Anpassen, sprich konfigurieren der individuellen Ansible Umgebung. | + | |
| - | | + | |
| - | Schliesslich wollen wir unsere Zeit als Admin ja auch sinnvoll nutzen und mit möglichst geringen Aufwand zu Ziel kommen. | + | 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 | ||
| - | $ ansible-vault edit inventories/ | + | ===== Zusammenfassung |
| - | <file c++ admins> | + | <WRAP center round tip 80%> |
| - | - user : Michael Nausch | + | 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 |
| - | name : django | + | </WRAP> |
| - | groups : wheel | + | |
| - | ids : 1000 | + | |
| - | shell : /bin/bash | + | |
| - | state : present | + | |
| - | pwd : $6$QYCbUeY2/ | + | |
| - | key : ssh-ed25519 AAAAC3N1NTE5A0aTHP001zaC1lZDI1NTE5AAAAINPs/ | + | |
| - | - user : Christoph Leichi | + | |
| - | name : rookie | + | |
| - | groups : wheel | + | |
| - | ids : 1001 | + | |
| - | 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 | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | < | + | |
| - | + | ||
| - | - 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: "VIM Konfig ablegen" | + | |
| - | ansible.builtin.copy: | + | |
| - | src: files/ | + | |
| - | 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 }}/ | + | |
| - | 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 == " | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | + | ||
| - | - name: "SSH-Client-Verzeichnis entfernen, sofern der User zum Löschen gekennzeichnet ist mit absent im Inventory/ | + | |
| - | ansible.builtin.file: | + | |
| - | | + | |
| - | state: absent | + | |
| - | when: ' item.state == " | + | |
| - | with_items: '{{ linux_admins }}' | + | |
| - | ... | + | ====== Links ====== |
| - | </code> | + | * **[[detail|zurück zum Kapitel " |
| + | * **=> [[playbook_example_10|weiter zum Kapitel " | ||
| + | * **[[start|Zurück zur " | ||
| + | * **[[wiki: | ||
| + | * **[[http:// | ||