低优先级 → 高优先级
defaults/main.yml # 角色默认变量
↓
inventory group_vars # 主机组的变量
↓
inventory host_vars # 主机的变量
↓
playbook vars_files # Playbook里引入的变量文件
↓
playbook vars # Playbook里直接写的变量
↓
roles/xxx/vars/main.yml # 角色内部的固定变量
↓
set_facts # 在Playbook中动态设置的变量
↓
extra_vars (-e) # 命令行传的变量(最高,无法被覆盖)
defaults
↓
group_vars
↓
host_vars
↓
vars_files
↓
vars
↓
roles/vars
↓
set_fact
↓
extra_vars (-e)
| 层级 | 来源 | 特点 |
|---|
| defaults/ | 角色默认值,可以被覆盖 | 最低优先级,常用于给用户自由设置 |
| group_vars/ | 针对一组主机定义的变量 | 按组统一 |
| host_vars/ | 针对单个主机定义的变量 | 按主机定制 |
| vars_files | Playbook指定的外部变量文件 | 手动引入的全局变量 |
| vars | Playbook里直接写的变量 | 优先级更高,任务用 |
| roles/vars/ | 角色内部固定变量 | 很难覆盖,角色私有 |
| set_fact | Playbook中动态生成的变量 | 动态生成的,优先级极高 |
| extra_vars (-e) | 命令行传参 | 最高优先级,无敌 |