我的一些剧本具有以下子剧本结构:

- hosts: sites
  user: root
  tags:
    - configuration
  tasks:
  (...)

- hosts: sites
  user: root
  tags:
    - db
  tasks:
  (...)

- hosts: sites
  user: "{{ site_vars.user }}"
  tags:
    - app
  tasks:
  (...)

在Ansible 1.x中,管理员和开发人员都可以使用这种剧本。管理员可以使用所有标签(root和用户访问权限)来运行它,而开发人员只能访问具有用户访问权限级别任务的最后一个标签。当开发人员使用app标签运行此剧本时,前两个标签的收集事实被跳过。但是,现在在Ansible 2.1中,它不会被跳过,这会导致没有root访问权限的用户失败。

是否有机制或简单的修改可以解决此问题?现在是否有应对这种情况的新方法?

最佳答案

有一个简单的mod-关闭事实收集并显式调用setup:

- hosts: sites
  user: root
  tags:
    - configuration
  gather_facts: no
  tasks:
    - setup:
    (...)

10-05 23:01
查看更多