ドキュメント には、lineinfile
モジュールを使用して/etc/sudoers
を編集する例があります。
- lineinfile: "dest=/etc/sudoers state=present regexp='^%wheel' line='%wheel ALL=(ALL) NOPASSWD: ALL'"
少しハック感があります。
これを処理するためにuser
モジュールに何かがあると思いましたが、オプションはないようです。
/etc/sudoers
にユーザーを追加および削除するためのベストプラクティスは何ですか?
その行は実際にユーザーをsudoersに追加するものではなく、単にwheel
グループがすべてのコマンドに対してパスワードなしのSudoを持つことができるようにすることです。
ユーザーを/etc/sudoers
に追加する場合は、ユーザーを必要なグループに追加してから、これらのグループにSudoへの関連アクセス権を付与することをお勧めします。これは、Ansibleも使用していない場合に当てはまります。
ser 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 }}"