web-dev-qa-db-ja.com

Ansible:sudoersのリストを維持するためのベストプラクティス

ドキュメント には、lineinfileモジュールを使用して/etc/sudoersを編集する例があります。

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

少しハック感があります。

これを処理するためにuserモジュールに何かがあると思いましたが、オプションはないようです。

/etc/sudoersにユーザーを追加および削除するためのベストプラクティスは何ですか?

30
chishaku

その行は実際にユーザーを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 }}"
47
ydaetskcoR