如何禁用未包含在给定标记内的子播放的事实

Mic*_*hal 18 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:
  (...)
Run Code Online (Sandbox Code Playgroud)

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

是否有机制或简单修改来解决此问题?现在是否应该采用一种新方法应用于此类案件?

Kon*_*rov 38

有一个简单的mod - 关闭事实收集和setup明确调用:

- hosts: sites
  user: root
  tags:
    - configuration
  gather_facts: no
  tasks:
    - setup:
    (...)
Run Code Online (Sandbox Code Playgroud)