2015-10-27 19 views
21

Nel documentation, c'è un esempio di utilizzo del modulo lineinfile per modificare /etc/sudoers.Ansible: best practice per il mantenimento dell'elenco di sudoers

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

Si sente un po 'hacker.

Ho pensato che ci sarebbe qualcosa nel modulo user per gestire questo, ma non sembra esserci alcuna opzione.

Quali sono le migliori pratiche per aggiungere e rimuovere utenti a /etc/sudoers?

risposta

40

Quella linea non sta in realtà aggiungendo utenti a sudoers, ma semplicemente assicurandosi che il gruppo wheel possa avere sudo senza password per tutti i comandi.

Per quanto riguarda l'aggiunta di utenti a /etc/sudoers, è meglio farlo aggiungendo gli utenti ai gruppi necessari e quindi dando a questi gruppi l'accesso pertinente a sudo. Questo è vero anche quando non usi Ansible.

Il user module consente di specificare un elenco esclusivo di gruppo o di aggiungere semplicemente i gruppi specificati a quelli correnti che l'utente ha già. Questo è naturalmente idempotente in quanto non è possibile definire un utente in un gruppo più volte.

Un gioco esempio potrebbe essere simile a questa:

- 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' come attributo della task' lineinfile' farà in modo che non si scherza qualcosa, eseguendo prima attraverso il comando di convalida. – xenithorb