यह @Konstantin Suvorov का एक समान उत्तर है लेकिन थोड़ा अधिक परिष्कृत है, कुछ बारीकियों के साथ स्पष्ट रूप से वर्तनी है, और वास्तव में परीक्षण और उपयोग में है।
निम्नलिखित का उपयोग करते हुए, आपको केवल उन उपयोगकर्ता नामों की एक सूची बनाए रखने की आवश्यकता होती है, जिनकी आप एक्सेस करना चाहते हैं। उस सूची से कोई भी परिवर्धन या निष्कासन मेजबान पहुंच में परिलक्षित होगा।
वैकल्पिक सहायक टिप: हम वास्तव में इस सूची के लिए अपने GitHub उपयोगकर्ता नाम का उपयोग करना चुनते हैं, क्योंकि तब हम आसानी से SSH कुंजी भी जोड़ सकते हैं। एक उदाहरण के लिए अंत देखें।
सबसे पहले, group_varsहम अपने डेवलपर्स की हमारी सूची को परिभाषित करते हैं जिसे हम एक्सेस करना चाहते हैं (ध्यान दें कि इसे कई तरीकों से परिभाषित किया जा सकता है, न कि केवल group_vars)
developers:
- user1
- user2
- etc...
दूसरा, हम एक समूह बनाते हैं जिसके लिए हम अपने डेवलपर्स को निम्न कार्य सौंपेंगे:
- name: Create "developers" group
group:
name: developers
state: present
तीसरा, हम अपने डेवलपर्स को इस समूह में जोड़ते हैं। ध्यान दें कि हम उन्हें संपत्ति के माध्यम से जोड़ते हैं groupsऔर नहीं group। यह इसे एक माध्यमिक समूह के रूप में जोड़ता है और यह सुनिश्चित करता है कि वे इसमें दिखाई दें /etc/group। यह महत्वपूर्ण है क्योंकि यदि आप उन्हें एक प्राथमिक समूह के रूप में जोड़ते हैं, तो वे उस समूह के सदस्य के रूप में प्रकट नहीं होंगे /etc/group:
- name: Add user accounts
user:
name: "{{ item }}"
shell: /bin/bash
groups: [developers]
state: present
with_items: "{{ developers }}"
चौथा, हम तब सभी उपयोगकर्ताओं को प्राप्त करते हैं जो वर्तमान में होस्ट पर डेवलपर्स समूह से संबंधित हैं ( ध्यान दें कि यह प्राथमिक चरण में उल्लिखित प्राथमिक / माध्यमिक धारणा पर निर्भर है ):
- name: Determine existing users
shell: 'grep developers /etc/group | cut -d: -f4 | tr "," "\n"'
changed_when: false
register: existing_users
पांचवां, यह निर्धारित करें कि उनमें से कौन सा उपयोगकर्ता हटा दिया जाना चाहिए (जैसे जो हमारे developersgroup_vars सूची में परिभाषित नहीं हैं ):
- name: Determine removed users
set_fact:
removed_users: "{{ existing_users.stdout_lines | difference(developers) }}"
छठा और अंतिम, उन्हें हटा दें:
- name: Delete removed user accounts
user:
name: "{{ item }}"
state: absent
with_items: "{{ removed_users }}"
वैकल्पिक सहायक कदम - अगर GitHub उपयोगकर्ता नाम से उपयोगकर्ताओं को जोड़ते हैं, तो आप आसानी से उन्हें GHHub पर उपलब्ध सार्वजनिक कुंजी से SSH एक्सेस प्रदान कर सकते हैं:
- name: Add public ssh keys of users
authorized_key:
user: "{{ item }}"
exclusive: yes
key: https://github.com/{{ item }}.keys
state: present
with_items: "{{ developers }}"