如何在Ansible中正确记录一次性更改?

如何在Ansible中正确记录一次性更改?,ansible,Ansible,我已经开始使用Ansible进行服务器配置。我将Ansible相关文件存储在git存储库中,它工作得非常好 我的问题是:使用Ansible记录一次性任务的方法是什么。例如,删除旧用户帐户时,我是运行单个任务来删除帐户,还是在我的site.yml中包含user=john state=缺席行 这方面有最佳实践吗?如果我把它包括在我的站点.yml中,它将继续增加。如果我将其作为一次性任务运行,则团队的其他成员不知道此任务已运行。我将向您的playbook中添加几个任务以删除不必要的用户: - shel

我已经开始使用
Ansible
进行服务器配置。我将Ansible相关文件存储在
git
存储库中,它工作得非常好

我的问题是:使用Ansible记录一次性任务的方法是什么。例如,删除旧用户帐户时,我是运行单个任务来删除帐户,还是在我的
site.yml
中包含
user=john state=缺席行


这方面有最佳实践吗?如果我把它包括在我的
站点.yml中,它将继续增加。如果我将其作为一次性任务运行,则团队的其他成员不知道此任务已运行。

我将向您的playbook中添加几个任务以删除不必要的用户:

- 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) }}"

考虑到
必需的\u用户
是一个将要出现的用户列表,我们将获得UID>900的目标系统上除
无人
之外的所有用户,并确保删除存在但不需要的用户。

在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早就不在了(你呢?),你就可以将他从遗留名单中删除,这样你就不能确保他离开你的组织后的第四个季度不在了

他仍然在版本控制中,所以你可以随时参考他被添加和删除的时间