2015-10-27 4 views
21

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

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

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

Я предположил, что в модуле user есть что-то, чтобы справиться с этим, но не существует никаких параметров.

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

ответ

40

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

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

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

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

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

'Validate: visudo -cf% s' как атрибут' lineinfile' задачи будет гарантировать, что вы не трогайте что-то вверх, запустив сначала с помощью команды проверки. – xenithorb