Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision |
tachtler:benutzer_mit_ansible_verwalten [2020/03/20 06:18] – [~/ansible/roles/00_user/tasks/main.yml] klaus | tachtler:benutzer_mit_ansible_verwalten [2020/03/20 07:25] – [~/ansible/roles/00_user/tasks/main.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!__** |
:!: **HINWEIS** - **Dies bewirkt, das die Gruppe __komplett gelöscht__ wird!** | :!: **HINWEIS** - **Dies bewirkt, das die Gruppe __komplett gelöscht__ wird!** |
| |
* <code yaml>- name: Ensure group exists. | * <code yaml>- name: Ensure group exists, ONLY if active. |
group: | group: |
gid: "{{ item.value.gid }}" | gid: "{{ item.value.gid }}" |
name: "{{ item.value.group }}" | name: "{{ item.value.group }}" |
state: present | state: present |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* ''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. |
* ''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. |
| |
* <code yaml>- name: Ansible-Host - Ensure user exists. | * <code yaml>- name: Ansible-Host - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ 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 |
* ''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. |
* ''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. |
durchgeführt wird. | durchgeführt wird. |
| |
* <code yaml>- name: Clients - Ensure user exists. | * <code yaml>- name: Clients - Ensure user exists, ONLY if active. |
user: | user: |
append: yes | append: yes |
state: present | state: present |
uid: "{{ item.value.uid }}" | uid: "{{ item.value.uid }}" |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* 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. |
* ''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. |
| |
* <code yaml>- name: Set exclusive authorized key for users taken from file. | * <code yaml>- name: Set exclusive authorized key for users taken from file, ONLY if active. |
authorized_key: | authorized_key: |
user: "{{ item.value.name }}" | user: "{{ item.value.name }}" |
state: present | state: present |
exclusive: True | exclusive: True |
| when: "item.value.active | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
* 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. |
* ''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. |
groups: wheel | groups: wheel |
name: "{{ item.value.name }}" | name: "{{ item.value.name }}" |
when: "item.value.wheel | bool" | when: |
| - "item.value.active | bool == True" |
| - "item.value.wheel | bool == True" |
with_dict: | with_dict: |
- "{{ users }}" | - "{{ users }}" |
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'' |
* ''when: "item.value.wheel | bool"'' - - aus dem **dictionary (Wörterbuch)** - ''users'' - konvertiert zu einem boolischem Wert (Wahr/Unwahr). | * '' - "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. |
| * ''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. |