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
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.
Ansible role for managing user accounts and authorized ssh-keys
ansible-galaxy install 1it.users