1it.users

Rôle des utilisateurs pour Ansible

Ce rôle permet une gestion simple des comptes utilisateurs sur un système.
Depuis la version 0.2, il est possible de contrôler où créer un certain compte utilisateur - en définissant le groupe d'hôtes cible (par exemple, groupe d'inventaire, tag EC2 ou autre étiquette cloud)

Journal des modifications

0.2.1 - 2021-11-08

Ajouté :

Supprimer le groupe d'utilisateur
Supprimer le répertoire personnel de l'utilisateur - delete_homedirs

0.2 - 2021-11-08

Modifié :

target_hosts est maintenant obligatoire. Veuillez ajouter target_hosts: ['all'] à chaque entrée utilisateur si vous souhaitez créer cet utilisateur sur tous les hôtes.

Supprimé :

users_keys a été supprimé en raison de problèmes de compatibilité. Il n'était probablement pas utilisé.

0.1 - 2021-10-27

Corrections :

groups doit être omis par défaut, ainsi que d'autres valeurs par défaut.

Ajouté :

Première tentative de target_hosts (non fonctionnelle).

Modifié :

users.state est obligatoire.

Exigences

  • Ansible 2.9.0 ou supérieur

Variables

Les variables qui peuvent être passées à ce rôle et une brève description à leur sujet sont les suivantes :

# La liste des comptes utilisateurs à ajouter au système
users: []

# Le shell par défaut attribué à tous les comptes utilisateurs
users_default_shell: '/bin/bash'

# Le groupe par défaut dans lequel les nouveaux comptes utilisateurs seront ajoutés
users_default_group: 'users'

# Le paramètre par défaut pour savoir s'il faut créer un groupe unique par utilisateur ou mettre
# tous les utilisateurs dans le groupe par défaut défini ci-dessus
users_create_group_per_user: true

# Le paramètre par défaut pour savoir s'il faut créer des répertoires personnels pour les utilisateurs
users_create_homedir: true

# La liste des groupes par défaut (à créer)
users_group_list: []

# Supprimer les répertoires personnels lors de la suppression d'un utilisateur - désactivé par défaut
delete_homedirs: false

Structure de la liste des utilisateurs

# La liste des comptes utilisateurs à ajouter au système
users:
  # Premier utilisateur définissant uniquement les attributs requis
  - username: 'johndoe'     # Nom d'utilisateur Linux
    uid: 1000               # ID utilisateur OPTIONNEL (généralement, les utilisateurs non-système commencent à 1000)
    authorized: []          # Liste des clés SSH publiques à ajouter au compte
    target_hosts: ['dev']   # Liste des groupes d'hôtes d'inventaire où le compte utilisateur doit exister
    state: 'present'        # ÉTAT requis du compte
  # Deuxième utilisateur définissant tous les attributs disponibles
  - username: 'janedoe'     # Nom d'utilisateur Linux
    uid: 1001               # ID utilisateur OPTIONNEL (généralement, les utilisateurs non-système commencent à 1000)
    authorized:             # Liste des clés SSH publiques à ajouter au compte
      - 'ssh-rsa key_string1'
      - 'ssh-ecdsa key_string2'
    name: 'Jane Doe'        # Utilisé comme commentaire lors de la création du compte
    system: false           # Indique si le compte sera un utilisateur système
    group: 'jdoe'           # Groupe principal alternatif spécifique à l'utilisateur
    groups:                 # Groupes d'utilisateurs supplémentaires
      - 'admin'
      - 'developers'
    shell: '/bin/bash'      # Shell par défaut pour le compte
    home: '/home/jdoe'      # Emplacement alternatif du répertoire personnel pour le compte
    generate_key: true      # Générer une nouvelle clé SSH pour le compte
    state: 'present'
  # Comptes désactivés
  - username: 'bob'
    uid: 1003
    authorized: []
    target_hosts: ['dev']
    state: absent

Exemple de playbook

  1. Création d'un utilisateur administrateur système et d'un utilisateur de déploiement :

    ---
    # Ce playbook installe des utilisateurs communs sur les machines
    
    - name: Appliquer des utilisateurs communs à tous les nœuds
      hosts: all
      roles:
        - { role: users,
            users:
              - username: 'sa'
                authorized: ['ssh-rsa key_string']
                name: 'Administrateur Système'
                groups: ['admin']
                target_hosts:
                  - dev
                  - stage
                  - prod
                state: 'present'
              - username: 'ansible'
                name: 'Compte de service Ansible'
                generate_key: true
                authorized: []
                state: 'present'
                # Attention - target_hosts doit être défini sinon l'utilisateur ne sera pas créé.
                # Utilisez ['all'] pour créer un utilisateur sur tous les hôtes par défaut.
                target_hosts: ['all']
              - username: 'johndoe'
                name: 'John Doe'
                generate_key: true
                authorized: []
                target_hosts: ['dev']
                state: 'present'
          }
    

Remarque: Lors de la création d'une variable contenant la liste des utilisateurs à ajouter ou à supprimer, le meilleur endroit pour commencer est dans group_vars/all. Essayez group_vars/groupname ou host_vars/hostname si vous ne souhaitez des utilisateurs que sur certaines machines. target_hosts est une liste de groupes d'hôtes, cela peut également être un Tag dans un inventaire cloud dynamique, comme AWS/GCP/WhateverCloud, zone de disponibilité, région, projet.

Dépendances

Licence

MIT.

À propos du projet

Ansible role for managing user accounts and authorized ssh-keys

Installer
ansible-galaxy install 1it.users
Licence
mit
Téléchargements
366
Propriétaire
Site Reliability Engineer