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

时间:2017-07-25 19:56:07

标签: ansible

我已开始使用Ansible进行服务器配置。我将Ansible相关文件存储在git存储库中,它运行良好。

我的问题是:使用Ansible运行一次性任务的方法有哪些。例如,在删除旧用户帐户时,是运行删除帐户的单个任务,还是将user=john state=absent line包含在site.yml中。

有关于此的最佳做法吗?如果我将其包含在site.yml中,它会不断增加。如果我将其作为一次性任务运行,团队的其他成员就不会意识到此任务已经运行。

2 个答案:

答案 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,并确保存在但不是必需的用户是删除。