En 7.1, on a créé des comptes et on les a rattachés à un groupe existant (sudo) avec l’option groups du module user. Mais que faire quand le groupe lui-même n’existe pas encore ? C’est le rôle du module group.
Créer un groupe
- name: Créer le groupe support
ansible.builtin.group:
name: support
state: presentMême logique que partout ailleurs dans cette formation : si support existe déjà, ok. Sinon, création, et changed.
Un groupe avec un GID précis
Dans certains contextes (notamment quand plusieurs serveurs doivent partager exactement le même identifiant numérique de groupe, par exemple pour des permissions sur un stockage partagé en NFS), on peut fixer le GID explicitement :
- name: Créer le groupe support avec un GID fixe
ansible.builtin.group:
name: support
gid: 3000
state: present⚠️ Si le GID
3000est déjà utilisé par un autre groupe sur la machine, la tâche échoue avec une erreur claire — Ansible ne force jamais un GID en écrasant un groupe existant.
L’ordre logique : le groupe avant l’utilisateur
Un piège fréquent chez les débutants : créer un utilisateur avec un groupe qui n’existe pas encore. Le module user échoue dans ce cas, puisqu’il ne crée pas automatiquement les groupes secondaires qu’on lui indique.
La bonne pratique consiste donc à toujours créer le groupe avant l’utilisateur qui doit en faire partie :
- name: Créer le groupe support
ansible.builtin.group:
name: support
state: present
- name: Créer le compte et l'ajouter au groupe support
ansible.builtin.user:
name: alice
groups: support
append: yes
state: presentGérer plusieurs groupes à la fois avec loop
Souvenez-vous de loop, vu en section 4 : idéal pour créer plusieurs groupes en une seule tâche, plutôt que d’en répéter une par groupe :
- name: Créer les groupes métiers de Nordika
ansible.builtin.group:
name: "{{ item }}"
state: present
loop:
- support
- developpement
- directionSupprimer un groupe
- name: Supprimer un groupe obsolète
ansible.builtin.group:
name: ancien_service
state: absent⚠️ Supprimer un groupe qui est encore le groupe primaire d’un utilisateur existant provoque une erreur système — pensez à vérifier (ou à migrer les comptes concernés) avant de le retirer.
Groupe primaire vs groupes secondaires : une nuance à connaître
Chaque compte Linux a un seul groupe primaire (souvent un groupe du même nom que l’utilisateur, créé automatiquement), et peut appartenir à plusieurs groupes secondaires. Le module user permet d’ajuster les deux, avec deux options différentes :
- name: Définir le groupe primaire et les groupes secondaires
ansible.builtin.user:
name: alice
group: support # groupe primaire (un seul, remplace l'existant)
groups: developpement # groupes secondaires (avec append: yes pour ne pas écraser)
append: yesNotez la différence : group (singulier) pour le groupe primaire, groups (pluriel) pour les groupes secondaires — une source de confusion fréquente si on ne fait pas attention à ce détail dans la documentation.
Ce qu’il faut retenir
ansible.builtin.groupsuit la même logiquestate: present/absentque tous les modules vus jusqu’ici.- Toujours créer le groupe avant l’utilisateur qui doit en faire partie.
group(singulier) = groupe primaire,groups(pluriel) = groupes secondaires — deux options bien distinctes du moduleuser.loopreste le meilleur réflexe pour créer plusieurs groupes en une seule tâche.
Dans la prochaine leçon, on distribue des clés SSH en masse avec authorized_key — parce que créer un compte, c’est bien, mais encore faut-il pouvoir s’y connecter proprement, sans mot de passe partagé.