如何禁用不包含在给定标签中的子播放的收集事实

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:
    (...)