Ansible: meilleure pratique pour maintenir la liste des sudoers

Dans la documentation , il y a un exemple d’utilisation du module lineinfile pour éditer /etc/sudoers .

 - lineinfile: "dest=/etc/sudoers state=present regexp='^%wheel' line='%wheel ALL=(ALL) NOPASSWD: ALL'" 

Se sent un peu piraté.

J’ai supposé qu’il y aurait quelque chose dans le module user pour gérer cela, mais il ne semble pas y avoir d’options.

Quelles sont les meilleures pratiques pour append et supprimer des utilisateurs à /etc/sudoers ?

Cette ligne n’ajoute pas d’utilisateur aux sudoers, en s’assurant simplement que le groupe de wheel peut avoir un sudo sans mot de passe pour toutes les commandes.

Pour append des utilisateurs à /etc/sudoers il est préférable d’append des utilisateurs aux groupes nécessaires, puis de donner à ces groupes l’access approprié à sudo. Cela est vrai lorsque vous n’utilisez pas Ansible aussi.

Le module utilisateur vous permet de spécifier une liste exclusive de groupe ou d’append simplement les groupes spécifiés aux groupes actuels déjà existants. Ceci est naturellement idempotent car un utilisateur ne peut pas être défini pour être dans un groupe plusieurs fois.

Un exemple de jeu pourrait ressembler à ceci:

 - hosts: all vars: sudoers: - user1 - user2 - user3 tasks: - name: Make sure we have a 'wheel' group group: name: wheel state: present - name: Allow 'wheel' group to have passwordless sudo lineinfile: dest: /etc/sudoers state: present regexp: '^%wheel' line: '%wheel ALL=(ALL) NOPASSWD: ALL' validate: visudo -cf %s - name: Add sudoers users to wheel group user: name: "{{ item }}" groups: wheel append: yes with_items: "{{ sudoers }}"