2015-10-27 9 views
21

In der gibt es ein Beispiel für die Verwendung des lineinfile Moduls zum Bearbeiten /etc/sudoers.Ansible: Best Practice zum Verwalten der Liste der Sudoers

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

Fühlt sich ein bisschen hackish.

Ich nahm an, dass es etwas im user Modul geben würde, um dies zu handhaben, aber es scheint keine Optionen zu geben.

Welche Best Practices zum Hinzufügen und Entfernen von Benutzern zu /etc/sudoers?

Antwort

40

Diese Zeile fügt tatsächlich keine Benutzer zu sudoers hinzu und stellt lediglich sicher, dass die Gruppe wheel für alle Befehle passwortloses Sudo haben kann.

Zum Hinzufügen von Benutzern zu /etc/sudoers ist dies am besten durch Hinzufügen von Benutzern zu erforderlichen Gruppen und dann diese Gruppen den entsprechenden Zugriff auf Sudo. Dies gilt auch, wenn Sie nicht auch Ansible verwenden.

Mit der user module können Sie eine exklusive Liste von Gruppen angeben oder einfach die angegebenen Gruppen an die aktuellen Gruppen anhängen, die der Benutzer bereits besitzt. Dies ist natürlich idempotent, da ein Benutzer nicht mehrfach in einer Gruppe definiert werden kann.

könnte Ein Beispiel spielen wie folgt aussehen:

- 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' als Attribut des' lineinfile' Aufgabe wird sicherstellen, dass Sie etwas oben nicht verwirren tun, indem Sie es durch den Validierungsbefehl zuerst. – xenithorb