rembik.users
Rôle Ansible : Utilisateurs
Ce rôle gère les utilisateurs et leurs groupes sur votre système.
Exigences
- Accès à un dépôt contenant des paquets, probablement sur Internet.
- Une version récente d'Ansible (testée sur les 2 dernières versions principales stables).
Les rôles suivants peuvent être installés pour s'assurer que toutes les exigences sont respectées, en utilisant ansible-galaxy install -r requirements.yml
:
---
- rembik.bootstrap
Variables du rôle
Ces valeurs par défaut sont définies dans defaults/main.yml
:
---
# fichier par défaut pour les utilisateurs
# La valeur par défaut, créer un groupe pour chaque utilisateur
# et en faire leur groupe principal
users_group_per_user: oui
# Si aucun groupe par utilisateur n'est créé, alors ceci est le groupe principal
# par défaut auquel tous les utilisateurs appartiennent
users_group: utilisateurs
# La valeur par défaut, créer un répertoire personnel pour l'utilisateur
# lors de la création du compte ou si le répertoire personnel n'existe pas
users_create_home: oui
# Les options sudo par défaut pour l'utilisateur lorsque sudo est réglé sur oui,
# mais aucune n'est spécifiée
users_sudo_options: "TOUT=(TOUT) NOPASSWD: TOUT"
# Le shell par défaut pour l'utilisateur lorsque rien n'est spécifié
users_shell: /bin/bash
# Le répertoire local pour trouver/stocker les clés SSH générées
users_ssh_key_dir: ssh_keys
# Listes des utilisateurs à créer, supprimer ou modifier
users: []
# Liste des groupes d'utilisateurs à créer ou supprimer
users_groups: []
Un bon endroit pour mettre des remplacements pour ces variables est dans group_vars/all
ou group_vars/group_name
, si vous souhaitez que des utilisateurs et groupes définis soient présents uniquement sur certaines machines.
La variable users
contenant la liste des utilisateurs à créer, supprimer ou modifier. Chaque utilisateur de cette liste est défini comme un dictionnaire. Les paramètres suivants sont disponibles pour chaque dictionnaire utilisateur :
Paramètre Utilisateur | Choix / Valeurs par défaut | Commentaires |
---|---|---|
name obligatoire |
Nom de l'utilisateur à créer, supprimer ou modifier. | |
state |
Choix:
|
Si le compte doit exister ou non, prenant des mesures si l'état diffère de ce qui est indiqué. |
comment |
Définit optionnellement la description (alias GECOS) du compte utilisateur. | |
uid |
Définit optionnellement le UID de l'utilisateur. | |
group |
Défaut: user.name |
Remplace optionnellement le groupe principal de l'utilisateur pris de users_group_per_user=yes ou users_group (prend un nom de groupe). |
gid |
Cela n'affecte que users_group_per_user=yes . Définit optionnellement un GID différent pour le groupe principal de l'utilisateur. Sinon, le UID sera utilisé. |
|
groups |
Liste des groupes auxquels l'utilisateur sera ajouté. Lorsqu'il est défini sur une chaîne vide, l'utilisateur est supprimé de tous les groupes sauf du groupe principal. | |
append |
Choix:
|
Si oui, ajoutez l'utilisateur aux groupes spécifiés dans groups . Si non, l'utilisateur ne sera ajouté qu'aux groupes spécifiés dans groups , les retirant de tous les autres groupes. |
password |
Défaut: ! | Définit optionnellement le mot de passe de l'utilisateur à cette valeur cryptée. Sinon, le compte utilisateur sera verrouillé. |
update_password |
Choix:
|
toujours mettra à jour les mots de passe s'ils diffèrent. lors de la création ne définira le mot de passe que pour les utilisateurs nouvellement créés. |
create_home |
Choix:
|
Remplace optionnellement cette valeur prise de users_create_home . À moins qu'il ne soit défini sur non, un répertoire personnel sera créé pour l'utilisateur lorsque le compte est créé ou si le répertoire personnel n'existe pas. |
home |
Défaut: /home/user.name |
Définit optionnellement le répertoire personnel de l'utilisateur. |
shell |
Défaut: /bin/bash | Remplace optionnellement le shell de l'utilisateur pris de users_shell . |
profile |
Définit optionnellement un bloc personnalisé dans le profil de l'utilisateur. Nécessite user.create_home=yes ! |
|
cron |
Choix:
|
Si oui, permet à l'utilisateur de créer, modifier, afficher ou supprimer des fichiers crontab. Sinon, interdit la modification des fichiers crontab. |
sudo |
Choix:
|
Si oui, définit les options sudo de l'utilisateur prises de user.sudo_options . Sinon, supprime les options sudo de l'utilisateur. |
sudo_options |
Défaut: TOUT=(TOUT) NOPASSWD: TOUT | Remplace optionnellement les options sudo de l'utilisateur prises de users_sudo_options . |
ssh_key |
Liste des clés SSH autorisées de l'utilisateur (prend des clés SSH publiques ; inclus directement et sans nouvelles lignes). Lorsqu'elle est définie sur une liste vide ou une chaîne, toutes les clés SSH autorisées de l'utilisateur sont supprimées. Nécessite user.create_home=yes ! |
|
generate_ssh_key |
Choix:
|
À moins qu'il ne soit défini sur non, génère la paire de clés SSH de l'utilisateur, si la clé SSH n'existe pas dans le répertoire local users_ssh_key_dir . Après cela, ajoutez-la aux clés SSH autorisées de l'utilisateur et déployez la paire de clés SSH sur l'utilisateur. Nécessite user.create_home=yes ! |
remove |
Choix:
|
Cela n'affecte que user.state=absent , il tente de supprimer les répertoires associés à l'utilisateur. Le comportement est le même que userdel --remove, consultez la page de manuel pour plus de détails et de support. |
force |
Choix:
|
Cela n'affecte que user.state=absent , il force la suppression de l'utilisateur et des répertoires associés sur les plateformes supportées. Le comportement est le même que userdel --force, consultez la page de manuel pour plus de détails et de support. |
La variable users_groups
contenant la liste des groupes d'utilisateurs à créer ou supprimer. Chaque groupe de cette liste est défini comme un dictionnaire. Les paramètres suivants sont disponibles pour chaque dictionnaire de groupe :
Paramètre de Groupe | Choix / Valeurs par défaut | Commentaires |
---|---|---|
name obligatoire |
Nom du groupe à gérer. | |
state |
Choix:
|
Si le groupe doit être présent ou non sur l'hôte distant. |
gid |
GID optionnel à définir pour le groupe. |
Dépendances
En général, ce rôle n'a pas de dépendances. En combinaison avec le rôle recommandé rembik.bootstrap
, ce rôle utilise l'utilisateur défini bootstrap_user
(si nécessaire) pour se connecter à l'hôte distant et exécuter les tâches de ce rôle.
Exemple de Playbook
Cet exemple est tiré de molecule/playbook.yml
:
---
- name: Convergence
hosts: tous
gather_facts: non
become: oui
roles:
- role: rembik.bootstrap
- role: rembik.users
vars:
users_ssh_key_dir: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}/ssh_key"
users_groups:
- name: utilisateurs
- name: bin
users:
- name: nouser
comment: Pas d'utilisateur
create_home: non
- name: molecule
comment: Utilisateur de test Ansible
uid: 2001
home: /home/test
cron: oui
sudo: oui
generate_ssh_key: oui
- name: administrateur
comment: Administrateur
uid: 2002
groups: [utilisateurs]
cron: oui
sudo: oui
profile: |
alias ll='ls -lah'
alias cp='cp -iv'
ssh_key:
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABWBILQeRSYYmGea/WIf6kd... [email protected]"
- name: utilisateur
comment: Utilisateur
uid: 2003
groups: [utilisateurs]
shell: /bin/sh
generate_ssh_key: oui
Tests de Rôle
Ce rôle est testé périodiquement contre les distributions Linux suivantes :
Les astérisques signifient que la construction est autorisée à échouer, elle est marquée comme une construction expérimentale.
Contribuer
Si vous trouvez des problèmes, veuillez les enregistrer sur cette page des problèmes du projet GitHub ou envisagez de contribuer du code en suivant ce guide.
Licence
Apache-2.0
Informations sur l'auteur
This role manages users and their groups on your system.
ansible-galaxy install rembik.users