我的一些剧本有这样的子剧本结构:
- 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 标记运行此playbook时,前两个标记会跳过收集事实。然而,现在,在Ansible 2.1中,它没有被跳过,这导致没有root访问权限的用户失败。
是否存在修复此行为的机制或简单修改?是否有一种新方法应该适用于此类案例?
答案 0 :(得分:26)
There is an easy mod – turn off facts gathering and call setup
explicitly:
- hosts: sites
user: root
tags:
- configuration
gather_facts: no
tasks:
- setup:
(...)