我的一些剧本具有以下子剧本结构:
- 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:
(...)