Ansible 如何禁用收集未包含在给定标记中的子显示的事实

Ansible 如何禁用收集未包含在给定标记中的子显示的事实,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,我的一些剧本有如下子剧本结构: - 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中,管

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

- 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中,管理员和开发人员都能够使用这样的剧本。管理员可以使用所有标记(根和用户访问)运行它,而开发人员只能使用用户访问级别的任务访问最后一个标记。当开发人员使用app标记运行此playbook时,前两个标记跳过了收集事实。然而,现在在Ansible 2.1中,它没有被跳过,这会导致没有根访问权限的用户失败


是否有一种机制或简单的修改来修复这种行为?现在是否有一种新的方法可以应用于此类情况?

有一个简单的模块-关闭事实收集并明确调用
设置程序:

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

肮脏的解决办法,但既然没有更好的办法,我会接受这一回答。这是一个很好的解决办法。实际上,在
pre_task
中添加
setup
任务对于基于角色的部署不起作用。如果这样做行得通,那么从main.yml管理gather_facts将非常困难