2015-10-27 17 views
21

documentation'da, /etc/sudoers'u düzenlemek için lineinfile modülünü kullanma örneği vardır.Ansible: sudoers listesinin bakımı için en iyi yöntem

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

Biraz aceleci hissediyor.

Bunu işlemek için user modülünde bir şey olacağını varsaydım ancak herhangi bir seçenek görünmüyor.

Kullanıcıları /etc/sudoers'a eklemek ve kaldırmak için en iyi yöntemler nelerdir?

cevap

40

Bu satır aslında kullanıcılara sudoers eklemiyor, yalnızca wheel grubunun tüm komutlar için parolasız sudo olabileceğinden emin olun.

Kullanıcıları /etc/sudoers'a eklemek için, bu, kullanıcıları gerekli gruplara ekleyerek ve sonra bu gruplara sudo ile ilgili erişimi vererek yapılır. Bu, aynı zamanda Ansible kullanmıyorken de geçerlidir.

user module, özel bir grup listesi belirtmenize veya belirtilen grupları, kullanıcının sahip olduğu geçerli olanlara eklemenize olanak tanır. Bu, bir kullanıcı bir grupta birden çok kez tanımlanamayacağı için doğal olarak idempotenttir.

örneği oynamak böyle bir şey olabilir:

- 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' çalıştırarak sen karışıklık birşeyler yok olmasını sağlayacaktır' lineinfile' görevin bir niteliği olarak önce doğrulama komutu ile. – xenithorb