我已开始使用Ansible
进行服务器配置。我将Ansible相关文件存储在git
存储库中,它运行良好。
我的问题是:使用Ansible运行一次性任务的方法有哪些。例如,在删除旧用户帐户时,是运行删除帐户的单个任务,还是将user=john state=absent line
包含在site.yml
中。
有关于此的最佳做法吗?如果我将其包含在site.yml
中,它会不断增加。如果我将其作为一次性任务运行,团队的其他成员就不会意识到此任务已经运行。
答案 0 :(得分:1)
在vars / users.yml中,我将列出您希望可用的用户列表以及不再需要的用户列表。您现在拥有用户状态的版本化源代码。
以下是未经测试的
---
users:
active:
- jon
- sansa
- arya
legacy:
- ned
- joffrey
然后你的戏剧会像......
- name: add active users
user:
name: "{{ item }}"
state: present
with_items: "{{users['active']}}"
- name remove legacy users
user:
name: "{{ item }}"
state: absent
with_items: "{{users['legacy']}}"
一旦你知道joffrey
早已不复存在(是吗?)那么你就可以将他从遗留名单中移除,这样你就不会确保他离开你的组织后不会出现季节。
他仍然会在版本控制中,所以你可以随时参考他被添加和删除的时间。
答案 1 :(得分:0)
我会在您的剧本中添加一些任务来删除不必要的用户:
- shell: "getent passwd | awk -F: '$3 > 900 {print $1}' | grep -v nobody"
register: passwd_res
changed_when: false
- user:
name: "{{ item }}"
state: absent
with_items: "{{ passwd_res.stdout_lines | difference(required_users) }}"
鉴于required_users
是要出席的用户列表,我们会让目标系统上的所有用户都使用除nobody
之外的UID> 900,并确保存在但不是必需的用户是删除。