ansibleguy.linux_users

Ansible Rolle - Systembenutzer und Gruppen

Ansible Rolle zur Bereitstellung von Benutzern und Gruppen auf Linux-Servern.

Kauf mir einen Kaffee

Molecule Test Status YamlLint Test Status PyLint Test Status Ansible-Lint Test Status Ansible Galaxy

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
Über das Projekt

Role to configure users and groups on a linux machine

Installieren
ansible-galaxy install ansibleguy.linux_users
GitHub Repository
Lizenz
other
Downloads
2.6k
Besitzer
[email protected] | GPG: https://badges.ansibleguy.net/public.gpg