Подтвердить что ты не робот

Ansible: лучшая практика для поддержания списка судеров

В документации приведен пример использования модуля lineinfile для редактирования /etc/sudoers.

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

Чувствует себя немного хаки.

Я предположил, что в нем будет что-то в модуле user, но нет никаких параметров.

Каковы наилучшие методы добавления и удаления пользователей в /etc/sudoers?

4b9b3361

Ответ 1

Эта строка на самом деле не добавляет пользователей в sudoers, просто убедившись, что группа wheel может иметь без пароля sudo для всех команд.

Что касается добавления пользователей в /etc/sudoers, лучше всего это сделать, добавив пользователей в нужные группы, а затем предоставив этим группам соответствующий доступ к sudo. Это верно, если вы также не используете Ansible.

Пользовательский модуль позволяет вам указать эксклюзивный список групп или просто добавить указанные группы к текущим, которые уже есть у пользователя, Это, естественно, идемпотент, так как пользователь не может быть определен в группе несколько раз.

Пример игры может выглядеть примерно так:

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