ansible变量优先级从低到高,命令行优先级最低,额外值得又相继最高
- command line values (eg “-u user”)
- role defaults [1]
- inventory file or script group vars [2]
- inventory group_vars/all [3]
- playbook group_vars/all [3]
- inventory group_vars/* [3]
- playbook group_vars/* [3]
- inventory file or script host vars [2]
- inventory host_vars/* [3]
- playbook host_vars/* [3]
- host facts / cached set_facts [4]
- play vars
- play vars_prompt
- play vars_files
- role vars (defined in role/vars/main.yml)
- block vars (only for tasks in block)
- task vars (only for the task)
- include_vars
- set_facts / registered vars
- role (and include_role) params
- include params
- extra vars (always win precedence)
范围变量
您可以根据希望该值具有的范围来决定在何处设置变量。Ansible有三个主要范围:
- 全局:这由配置,环境变量和命令行设置
- 播放:每个播放和包含的结构,vars条目(vars; vars_files; vars_prompt),角色默认值和vars。
- 主机:与主机直接关联的变量,如库存,include_vars,事实或已注册的任务输出
ansible中变量地方太多了,是学习得重点,如果把变量放在最好的位置。