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:
  • présent
  • absent
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:
  • non
  • oui
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
  • lors de la création
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:
  • oui
  • non
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:
  • non
  • oui
Si oui, permet à l'utilisateur de créer, modifier, afficher ou supprimer des fichiers crontab. Sinon, interdit la modification des fichiers crontab.
sudo Choix:
  • non
  • oui
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:
  • non
  • oui
À 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:
  • non
  • oui
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:
  • non
  • oui
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:
  • présent
  • absent
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 :

Ansible Ansible
DockerDistro Check Check
DockerDistro Check Check
DockerDistro Check Check
DockerDistro Check Check
EC2Distro Check
DockerDistro Check Check
EC2Distro Check
DockerDistro Check Check
EC2Distro Check
DockerDistro Check Check
DockerDistro Check Check
DockerDistro Check
DockerDistro Check Check
EC2Distro Check

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

À propos du projet

This role manages users and their groups on your system.

Installer
ansible-galaxy install rembik.users
Licence
apache-2.0
Téléchargements
83
Propriétaire