ansibleguy.linux_users
Ansible Rolle - Systembenutzer und Gruppen
Ansible Rolle zur Bereitstellung von Benutzern und Gruppen auf Linux-Servern.
Getestet auf:
- Debian 11
Installation
# neueste Version
ansible-galaxy role install git+https://github.com/ansibleguy/linux_users
# von galaxy
ansible-galaxy install ansibleguy.linux_users
# oder für einen benutzerdefinierten Rollenpfad
ansible-galaxy install ansibleguy.linux_users --roles-path ./roles
# Abhängigkeiten installieren
ansible-galaxy install -r requirements.yml
python3 -m pip install -r requirements.txt
Nutzung
Möchten Sie eine einfache Ansible-GUI? Schauen Sie sich meine Ansible WebUI an.
Konfiguration
Definieren Sie die Konfiguration für system_auth nach Bedarf:
system_auth:
users:
guy:
comment: 'AnsibleGuy'
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
64373031333937633163366236663237623464336461613334343739323763373330393930666331
...
ssh_pub:
- 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKkIlii1iJM240yPSPS5WhrdQwGFa7BTJZ59ia40wgVWjjg1JlTtr9K2W66fNb2zNO7tLkaNzPddMEsov2bJAno= [email protected]'
privileges:
- '/usr/bin/rsync'
- '/bin/systemctl restart apache2.service'
bash_aliases:
ll: 'ls -l'
other_guy:
comment: 'Ungewöhnlicher Benutzer'
shell: '/bin/fancyshell'
always_update_password: true # sonst wird nur bei der Erstellung gesetzt
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
61303431646338396364383939626630336436316661623830643636376130636163356234333464
...
ssh_pub:
- 'ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBBxS1MoeqDyN6+ZKsnLJHIA0/5nVQ6+a1Bgwknx3U7lGlqFIki/HgUX089YUzhbEKcxzTlR3Ji+gLnxhBZhe700= [email protected]'
scope: 'dc_europe_west' # Benutzer nur auf den Servern erstellen, die Mitglied der Inventar-Gruppe 'dc_europe_west' sind
privileges:
- '/bin/systemctl restart some_service.service'
sudoers_prompt: true # Benutzer muss sein Passwort bestätigen, wenn die aufgeführten Befehle über 'sudo' ausgeführt werden
root:
dont_touch: true # Benutzerkonto wird nicht geändert
bash_aliases:
ll: 'ls -l'
la: 'ls -la'
tc: 'tar -cJvf'
tx: 'tar -xJvf'
groups:
ag_guest:
members: ['joe', 'who?']
ag_tester:
members: ['hans']
ag_users:
members: ['lisa']
nested_groups: ['ag_tester']
ag_superguys:
members: ['seppal']
parents: ['ag_users']
ag_devops:
members: ['luis']
ag_admins:
members: ['reymond']
member_of: ['ag_superguys']
Sie können 'ansible-vault' verwenden, um Ihre Passwörter zu verschlüsseln:
ansible-vault encrypt_string
Ausführung
Führen Sie das Playbook aus:
ansible-playbook -K -D -i inventory/hosts.yml playbook.yml --ask-vault-pass
Verschachtelte Gruppen
Sie können zwei Gruppen miteinander verknüpfen und ihnen erlauben, die Mitglieder der anderen zu übernehmen.
Wenn eine andere Gruppe alle Mitglieder der aktuellen übernehmen soll:
- member_of
- parents
Wenn die aktuelle Gruppe alle Mitglieder einer anderen übernehmen soll:
- nested_groups
- children
Funktionalität
Benutzer
- Benutzerbereich => Einschränkung der Server, auf denen ein Benutzer erstellt werden soll
- Sudo-Rechte für bestimmte Befehle
- SSH Autorisierte Schlüssel
- Bash-Alias setzen
Gruppen
- verschachtelte Gruppen (Mitgliedererbschaft)
Info
Hinweis: Diese Rolle unterstützt derzeit nur debian-basierte Systeme.
Hinweis: Die meisten Funktionen der Rolle können optional aktiviert oder deaktiviert werden.
Für alle verfügbaren Optionen - siehe die Standardkonfiguration in der Hauptstandarddatei!
Warnung: Nicht jede Einstellung/Variable, die Sie bereitstellen, wird auf Gültigkeit geprüft. Falsche Konfiguration kann die Rolle beschädigen!
Beispiel
Konfiguration
system_auth:
users:
guy:
comment: 'AnsibleGuy'
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
...
other_guy:
comment: 'Ungewöhnlicher Benutzer'
scope: 'dc_europe_west'
remove: true # ob die mit dem Benutzer verbundenen Dateien gelöscht werden sollen, sobald er/sie/es gelöscht wird
force_remove: true # erzwungene Löschung oben
another_guy:
comment: 'Netter Typ'
password: !vault |
$ANSIBLE_VAULT;1.1;AES256
...
groups:
ag_guest:
members: []
ag_tester:
members: ['other_guy', 'another_guy']
state: 'absent'
ag_users:
members: []
nested_group: ['ag_tester']
ag_superguys:
members: []
parents: ['ag_users']
ag_devops:
members: []
ag_admins:
members: ['guy']
member_of: ['ag_superguys']
Ergebnis:
guy@ansible:~# cat /etc/group
> ...
> ag_guest:x:1000:
> ag_users:x:1002:guy,another_guy
> ag_superguys:x:1003:guy
> ag_devops:x:1004:
> ag_admins:x:1005:guy
> guy:x:1006:
> another_guy:x:1007:
guy@ansible:~# cat /etc/passwd
> ...
> guy:x:1000:1006:Ansible verwaltet - AnsibleGuy:/home/guy:/bin/bash
> another_guy:x:1001:1007:Ansible verwaltet - Netter Typ:/home/another_guy:/bin/bash
guy@ansible:~# cat /etc/sudoers.d/user_priv_guy
> # Ansible verwaltet
>
> Cmnd_Alias USER_PRIV_GUY = \
> /usr/bin/rsync, \
> /bin/systemctl restart apache2.service
>
> guy ALL=(ALL) NOPASSWD: USER_PRIV_GUY
guy@ansible:~# cat /etc/sudoers.d/user_priv_another_guy
> # Ansible verwaltet
>
> Cmnd_Alias USER_PRIV_ANOTHERGUY = \
> /bin/systemctl restart myNiceStuff.service
>
> another_guy ALL=(ALL) USER_PRIV_ANOTHERGUY
Role to configure users and groups on a linux machine
ansible-galaxy install ansibleguy.linux_users