Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung |
tachtler:benutzer_mit_ansible_verwalten [2020/03/20 06:24] – [~/ansible/roles/00_user/tasks/main.yml] klaus | tachtler:benutzer_mit_ansible_verwalten [2020/03/20 13:01] (aktuell) – [/home/ansible/ansible/00_user.yml] klaus |
---|
- hosts: all | - hosts: all |
vars_files: | vars_files: |
- /home/ansible/ansible/inventories/production/host_vars/00_user.yml | - inventories/production/host_vars/00_user.yml |
roles: | roles: |
- { role: 00_user } | - { role: 00_user } |
Die Definition, das das **Playbook** nachfolgende Variablen Datei verwenden soll. | Die Definition, das das **Playbook** nachfolgende Variablen Datei verwenden soll. |
| |
* <code yaml> - /home/ansible/ansible/inventories/production/host_vars/00_user.yml</code> | * <code yaml> - inventories/production/host_vars/00_user.yml</code> |
| |
Die Definition, der Variablen Datei welche das **Playbook** verwenden soll. | Die Definition, der Variablen Datei welche das **Playbook** verwenden soll. |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
- name: Add users to group 'wheel' if set. | - name: Add users to group 'wheel' if set to True. |
user: | user: |
append: yes | append: yes |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
no_log: True | no_log: True |
| - name: Remove users from all groups except the primary group, if set to False. |
| user: |
| append: no |
| groups: '' |
| name: "{{ item.value.name }}" |
| when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True |
</code> | </code> |
| |
* ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* mit dem Status ''state: absent'' bedeutet, dass der Benutzer gelöscht wird. | * mit dem Status ''state: absent'' bedeutet, dass der Benutzer gelöscht wird. |
* ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(ungleich wahr)** ist. | * ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(ungleich wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
**gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** | **gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** |
* ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* mit dem Status ''state: absent'' bedeutet, dass die Gruppe gelöscht wird | * mit dem Status ''state: absent'' bedeutet, dass die Gruppe gelöscht wird |
* ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(ungleich wahr)** ist. | * ''when: "item.value.active | bool != True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(ungleich wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
**gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** | **gelöscht** wird, **__falls dieser NICHT als aktiv gekennzeichnet ist!__** |
* ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert |
* ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(wahr)** ist. | * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
* mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Benutzer angelegt wird, wenn dieser nicht bereits existiert |
* ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(wahr)** ist. | * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''delegate_to: 127.0.0.1'' - bewirkt, dass dies **__NUR__** auf dem [[https://www.ansible.com/|Ansible]]-**Host** ausgeführt wird und nicht auf allen anderen **Clients** auch! | * ''delegate_to: 127.0.0.1'' - bewirkt, dass dies **__NUR__** auf dem [[https://www.ansible.com/|Ansible]]-**Host** ausgeführt wird und nicht auf allen anderen **Clients** auch! |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
* mit dem Status ''state: present'' bedeutet, dass die Gruppe angelegt wird, wenn diese nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass die Gruppe angelegt wird, wenn diese nicht bereits existiert |
* ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''uid:'' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(wahr)** ist. | * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
* mit dem Status ''state: present'' bedeutet, dass der Schlüssel hinzugefügt wird, wenn diese nicht bereits existiert | * mit dem Status ''state: present'' bedeutet, dass der Schlüssel hinzugefügt wird, wenn diese nicht bereits existiert |
* ''exclusive: True'' - bedeutet, das keine anderer öffentlicher Schlüssel in der Datei ''authorized_keys'' vorgehalten wird | * ''exclusive: True'' - bedeutet, das keine anderer öffentlicher Schlüssel in der Datei ''authorized_keys'' vorgehalten wird |
* ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(wahr)** ist. | * ''when: "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
der Gruppe ''wheel'' hinzugefügt wird, wenn die Varibale **''wheel: True''** gesetzt ist: | der Gruppe ''wheel'' hinzugefügt wird, wenn die Varibale **''wheel: True''** gesetzt ist: |
* ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' | * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
* '' - "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (Wahr/Unwahr) - **(wahr)** ist. | * '' - "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
* '' - "item.value.wheel | bool == True""'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (Wahr/Unwahr) - **(wahr)** ist. | * '' - "item.value.wheel | bool == True""'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (wahr/unwahr) - **(wahr)** ist. |
| * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
| durchgeführt wird. |
| |
| * <code yaml>- name: Remove users from all groups except the primary group, if set to False. |
| user: |
| append: no |
| groups: '' |
| name: "{{ item.value.name }}" |
| when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool != True" |
| with_dict: |
| - "{{ users }}" |
| no_log: True</code> |
| |
| Es wird sicher gestellt, das ein **Benutzer** des **Benutzers** aus dem **dictionary (Wörterbuch)** - ''users'' |
| * auf **__allen__ Clients** |
| von allen Gruppen, auch ''wheel'', außder dessen primärere Gruppe, entfernt wird, wenn die Varibale **''wheel: False''** gesetzt ist: |
| * ''name: '' - aus dem **dictionary (Wörterbuch)** - ''users'' |
| * '' - "item.value.active | bool == True"'' - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem booleschem Wert (wahr/unwahr) - **(wahr)** ist. |
| * '' - "item.value.wheel | bool != True""'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (wahr/unwahr) - **(unwahr)** ist. |
* ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. | * ''no_log: True'' - bewirkt, dass keine detaillierten Ausgaben erfolgen, da sonst z.B. Passwörter im Klartext bei der Log-Ausgabe auftauchen würden. |
durchgeführt wird. | durchgeführt wird. |
SSH password: | SSH password: |
Vault password: | Vault password: |
| |
| PLAY [all] ********************************************************************* |
| |
| TASK [Gathering Facts] ********************************************************* |
| ok: [192.168.1.20] |
| ok: [192.168.1.30] |
| |
| TASK [00_user : Make sure group 'wheel' does exists.] ************************** |
| ok: [192.168.1.20] |
| ok: [192.168.1.30] |
| |
| TASK [00_user : Allow 'wheel' group to have password accessed sudo.] *********** |
| changed: [192.168.1.20] |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Ensure user NOT exists, if NOT active.] ************************ |
| skipping: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.20] |
| skipping: [192.168.1.30] => (item=None) |
| skipping: [192.168.1.30] => (item=None) |
| skipping: [192.168.1.30] |
| |
| TASK [00_user : Ensure group NOT exists, if NOT active.] *********************** |
| skipping: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.20] |
| skipping: [192.168.1.30] => (item=None) |
| skipping: [192.168.1.30] => (item=None) |
| skipping: [192.168.1.30] |
| |
| TASK [00_user : Ensure group exists, ONLY if active.] ************************** |
| ok: [192.168.1.20] => (item=None) |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.20] => (item=None) |
| changed: [192.168.1.20] |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Ansible-Host - Ensure user exists, ONLY if active.] ************ |
| changed: [192.168.1.20 -> 127.0.0.1] => (item=None) |
| changed: [192.168.1.30 -> 127.0.0.1] => (item=None) |
| changed: [192.168.1.20 -> 127.0.0.1] => (item=None) |
| changed: [192.168.1.20] |
| changed: [192.168.1.30 -> 127.0.0.1] => (item=None) |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Clients - Ensure user exists, ONLY if active.] ***************** |
| changed: [192.168.1.20] => (item=None) |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.20] => (item=None) |
| changed: [192.168.1.20] |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Set exclusive authorized key for users taken from file, ONLY if active.] *** |
| ok: [192.168.1.20] => (item=None) |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.20] => (item=None) |
| changed: [192.168.1.20] |
| changed: [192.168.1.30] => (item=None) |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Add users to group 'wheel' if set to True.] ******************** |
| ok: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.20] => (item=None) |
| ok: [192.168.1.20] |
| changed: [192.168.1.30] => (item=None) |
| skipping: [192.168.1.30] => (item=None) |
| changed: [192.168.1.30] |
| |
| TASK [00_user : Remove users from all groups except the primary group, if set to False.] *** |
| skipping: [192.168.1.20] => (item=None) |
| skipping: [192.168.1.30] => (item=None) |
| ok: [192.168.1.20] => (item=None) |
| ok: [192.168.1.20] |
| ok: [192.168.1.30] => (item=None) |
| ok: [192.168.1.30] |
| |
| PLAY RECAP ********************************************************************* |
| 192.168.1.20 : ok=9 changed=5 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 |
| 192.168.1.30 : ok=9 changed=6 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0 |
</code> | </code> |
| |