在Ansible / 7.6在RedHat,我在寻找一种方式来清除一组的成员列表,并将其设置为一个新的列表。
给定一个用户列表U1,U2,U3,U4,我想变换在/ etc /组以下项:
mygroup:x:1234:u1,oldu17,oldu19,u3
到
mygroup:x:1234:u1,u2,u3,u4
我没有访问组成员的旧列表。另外请注意,某些成员可能留在组中(在上述例子中,U1和U3都处于老用户的新的列表)
背景:我们有许多用户一次可以访问六个月的某些应用程序,并且都是在同一时间开始的(例如,大学里一个学期的课程)。每六个月,我必须清除该组并添加新一批用户。
当然,我能想到的几种方法可以做到这一点,但他们似乎都非常的hackish。
我要寻找的是不太粗糙的东西,希望不太复杂。
答案 0 :(得分:1)
类似这样的东西:
---
- hosts: sample-host
gather_facts: no
vars:
managed_group: docker
valid_users:
- deploy
- telegraf
tasks:
- getent:
database: group
# 'getent_group' fact is registered by this module
- command: "gpasswd -d {{ item | quote }} {{ managed_group | quote }}"
become: yes
loop: "{{ actual_users | difference(valid_users) }}"
vars:
actual_users: "{{ getent_group[managed_group][2].split(',') }}"