在Playbook中调用外部变量文件需使用vars_files关键字加载YAML文件,如vars.yml;支持多文件顺序加载、相对/绝对路径,注意缩进、路径正确性及变量命名规范。

在 Playbook 中调用外部变量文件,核心是使用 vars_files 关键字加载 YAML 格式的变量定义文件。这种方式把配置和逻辑分离,便于复用和维护。
怎么写变量文件
新建一个 YAML 文件(如 vars.yml),内容为标准键值对:
# vars.yml
db_user: "appuser"
db_port: 5432
config_path: "/etc/myapp/conf.d"
注意:文件名无强制要求,但建议用 .yml 或 .yaml 后缀;支持注释(# 开头);不能有重复键,后出现的会覆盖前面的同名变量。
怎么在 Playbook 中引用
在 Play 的顶层(与 hosts、tasks 同级)添加 vars_files 块:
---
- hosts: all
vars_files:
- vars.yml
tasks:
- name: 显示数据库端口
debug:
msg: "端口是 {{ db_port }}"
可以一次引用多个文件,按顺序加载,后面文件中的同名变量会覆盖前面的:
- vars_files: - common.yml - prod.yml
路径怎么写才有效
vars_files 支持相对路径(推荐)和绝对路径:
- 相对路径基于 Playbook 所在目录解析,比如 Playbook 在
/opt/ansible/app/,写- vars.yml就会找/opt/ansible/app/vars.yml - 也可以写子目录,例如
- group_vars/prod.yml - 绝对路径以
/开头,如- /etc/ansible/vars/global.yml
常见问题提醒
如果变量没生效,先检查这几项:
- YAML 缩进是否正确(必须用空格,不能用 Tab)
- 变量文件是否存在、路径是否拼写错误
- Playbook 是否启用了
gather_facts: true(默认开启,不影响 vars_files) - 变量名是否符合规则:只能以字母开头,只含字母、数字、下划线


















