#file: cmservers.yml
- hosts: cmservers
tasks:
- include_vars: /var/cm/local/ansible/vars/cmusers.yml
- debug: var=users
roles:
- ansible-users-master
我发现角色任务首先被执行,但是需要首先定义用户列表,这不会发生。 任何帮助表示赞赏。
答案 0 :(得分:2)
或者,您可以在剧本中使用vars_files
指令。将变量存储在角色vars/main.yml
中时,这很方便,但是在执行playbook时还有一些其他变量或一些私有数据(可能会使用Ansible Vault)。
#file: cmservers.yml
- hosts: cmservers
vars_files:
- /var/cm/local/ansible/vars/cmusers.yml
roles:
- ansible-users-master
由于include_vars
是一项任务,因此最好在角色/汉字中使用它,而在剧本中使用vars_files
。使用vars_files
传递Ansible命令行变量也更容易。有关详细信息,请参阅:http://docs.ansible.com/ansible/playbooks_variables.html
答案 1 :(得分:1)
您可以使用pre_tasks
确保在角色和post_tasks
之前执行某些任务,以确保在应用角色后执行某些任务。因此,将tasks
更改为pre_tasks
可以解决问题。
- hosts: cmservers
pre_tasks:
- include_vars: /var/cm/local/ansible/vars/cmusers.yml
- debug: var=users
roles:
- ansible-users-master
您可以查看role documentation了解更多详情。