2016-03-04 19 views
8

kullanıcısına eklerse, çeşitli sunucularda kullanıcı eklemek için Ansible kullanıyorum. Bazı sunucularda tanımlanan farklı UNIX grupları var. Ansible'ın belirttiğim bir grubun varlığını kontrol etmesinin bir yolunu bulmak isterim ve bu grup mevcutsa, onu bir Kullanıcının ikinci grup listesine ekleyin (ancak grup mevcut değilse ifadeyi dikkate almayın).Ansible: Unix grubunu yalnızca grup

Bunu Ansible ile nasıl yapabileceğimize dair bir fikrin var mı?

İşte benim başlangıç ​​noktam.

Komuta

ansible-playbook -i 'localhost,' -c local ansible_user.yml 

ansible_user.yml

--- 

- hosts: all 
    user: root 
    become: yes 
    vars: 
    password: "!" 
    user: testa 
    tasks: 
    - name: add user 
     user: name="{{user}}" 
      state=present 
      password="{{password}}" 
      shell=/bin/bash 
      append=yes 
      comment="test User" 

Güncel: @udondan önerdiği çözüm dayalı, ben aşağıdaki ek ile bu çalışma elde edebildi görevler.

- name: Check if user exists 
     shell: /usr/bin/getent group | awk -F":" '{print $1}' 
     register: etc_groups 

    - name: Add secondary Groups to user 
     user: name="{{user}}" groups="{{item}}" append=yes 
     when: '"{{item}}" in etc_groups.stdout_lines' 
     with_items: 
      - sudo 
      - wheel 

cevap

3

Farklı ana makine türlerini tanımlamak için bir şeyiniz var mı? Aksi takdirde, o ana bilgisayarda hangi grupların bulunduğunu kontrol etmeniz gerekir. Bunu, her satırda bir grup çıkacak olan groups | tr -s " " "\012" komutu ile yapabilirsiniz.

Öyle gibi bu kadar ayrı görevi kullanabilirsiniz: Kayıtlı sonuç daha sonra kullanılabilir

- shell: groups | tr -s " " "\012" 
    register: groups 

Eğer

- user: ... 
    when: "some_group" in groups.stdout_lines 
+3

grupları> = 7.0 komutunu kullanıcı grubuna eklemek istediğinizde Red Hat ve arkadaşlar tüm grupları/etc/grupları içinde yazdırmaz. Sadece geçerli kullanıcının bulunduğu grupları basar. –

+1

Ubuntu 16.04'de, "gruplar ..." komutu sadece geçerli kullanıcının – mykola

+1

'a ait olduğu grupları yazdırır. "Gruplar", bu örnekte farklı bir değişken kaydetmeniz gerekir. Ansible ayrılmış değişken: - https://github.com/lorin/ansible-quickref – gilesw