2016-03-04 6 views
8

मैं उपयोगकर्ता को विभिन्न प्रकार के सर्वरों में जोड़ने के लिए उत्तरदायी उपयोग कर रहा हूं। कुछ सर्वरों में अलग-अलग यूनिक्स समूह परिभाषित किए गए हैं। मैं निर्दिष्ट समूह के अस्तित्व की जांच करने के लिए उत्तरदायी के लिए एक रास्ता खोजना चाहता हूं, और यदि वह समूह मौजूद है, तो इसे उपयोगकर्ता की द्वितीयक समूह सूची में जोड़ें (लेकिन यदि समूह मौजूद नहीं है तो कथन को अनदेखा करें)।उत्तर: यूनिक्स समूह को केवल उपयोगकर्ता के लिए जोड़ें यदि समूह मौजूद है

कोई विचार क्या मैं उत्तर के साथ ऐसा कर सकता हूं?

मेरा प्रारंभिक बिंदु यहां है।

कमान

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" 

अपडेट किया गया: समाधान @udondan द्वारा सुझाए गए आधार पर, मैं निम्नलिखित अतिरिक्त के साथ इस काम कर पाने में सक्षम था कार्य।

- 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 

उत्तर

3

क्या आपके पास उन विभिन्न होस्ट प्रकारों की पहचान करने के लिए कुछ भी है?

यदि नहीं, तो आपको पहले यह जांचना होगा कि उस होस्ट पर कौन से समूह मौजूद हैं। आप इसेकमांड के साथ कर सकते हैं जो प्रति पंक्ति एक समूह को आउटपुट करेगा।

आप इस रूप में अलग कार्य इतना तरह उपयोग कर सकते हैं:

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

पंजीकृत परिणाम फिर बाद में इस्तेमाल किया जा सकता आप उपयोगकर्ता समूह

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

समूहों> = 7.0 पर आदेश जोड़ना चाहते हैं जब Red Hat और दोस्तों/etc/समूहों में सभी समूहों को मुद्रित नहीं करते हैं। यह केवल उन मौजूदा समूहों को मुद्रित करता है जिनमें वर्तमान उपयोगकर्ता है। –

+1

उबंटू 16.04 पर, "समूह ..." कमांड केवल उन समूहों को प्रिंट करता है जो मौजूदा उपयोगकर्ता – mykola

+1

से संबंधित हैं, आपको इस उदाहरण में एक अलग चर पंजीकृत करने की आवश्यकता है क्योंकि "समूह" एक है उत्तरदायी आरक्षित चर: - https://github.com/lorin/ansible-quickref – gilesw

संबंधित मुद्दे