如何禁用不包含在给定标签中的子播放的收集事实
How to disable gathering facts for subplays not included within given tag
我的几个剧本都有这样的子剧本结构:
- 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:
(...)
我的几个剧本都有这样的子剧本结构:
- 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:
(...)