web-dev-qa-db-fra.com

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'"

Sent un peu hackish.

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 ajouter et supprimer des utilisateurs dans /etc/sudoers?

30
chishaku

Cette ligne n'ajoute pas réellement d'utilisateurs à sudoers, s'assurant simplement que le groupe wheel peut avoir la commande Sudo sans mot de passe pour tous.

Quant à l'ajout d'utilisateurs à /etc/sudoers il est préférable d'ajouter des utilisateurs aux groupes nécessaires, puis de donner à ces groupes l'accès approprié à Sudo. Cela est vrai lorsque vous n'utilisez pas Ansible également.

Le module utilisateur vous permet de spécifier une liste exclusive de groupes ou d'ajouter simplement les groupes spécifiés aux groupes actuels que l'utilisateur possède déjà. 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 }}"
47
ydaetskcoR