如何在Ansible动态Inventory文件中使用变量(Ovirt场景)
问题分析
动态Inventory配置文件不会被Ansible的Jinja2模板引擎解析,你在inventory_ovirt.yml中写的{{ engine_user }}等变量会被直接当作字符串传递给oVirt API,导致认证时使用{{ engine_user }}作为用户名,触发Cannot authenticate user '{{ engine_user }}@N/A'错误。
解决方案
方案1:用环境变量传递认证参数(推荐)
oVirt动态Inventory插件支持直接读取环境变量,对应关系为:配置键大写后加OVIRT_前缀,比如ovirt_url对应OVIRT_URL、ovirt_username对应OVIRT_USERNAME。
操作步骤:
- 修改
inventory_ovirt.yml,去掉模板变量,让插件自动读取环境变量:
--- plugin: ovirt.ovirt.ovirt ovirt_cafile: "" ovirt_query_filter: search: 'name=*' case_sensitive: no ...
- 在执行playbook时直接通过环境变量传入参数:
OVIRT_URL=https://rhv-cluster.example.com/ovirt-engine/api OVIRT_USERNAME=user@ldap OVIRT_PASSWORD=pass ansible-playbook -i inventory_ovirt.yml playbook.yaml
方案2:预渲染Jinja2模板生成Inventory配置
如果必须使用--extra-vars传递参数,可以先将Inventory配置做成Jinja2模板,渲染成实际配置文件后再执行playbook。
操作步骤:
- 创建模板文件
inventory_ovirt.j2:
--- plugin: ovirt.ovirt.ovirt ovirt_url: "{{ engine_url }}" ovirt_cafile: "" ovirt_username: "{{ engine_user }}" ovirt_password: "{{ engine_password }}" ovirt_query_filter: search: 'name=*' case_sensitive: no ...
- 使用
jinja2-cli工具渲染模板(需先安装jinja2-cli:pip install jinja2-cli):
jinja2 inventory_ovirt.j2 -D engine_url=https://rhv-cluster.example.com/ovirt-engine/api -D engine_user=user@ldap -D engine_password=pass > inventory_ovirt.yml
- 执行原playbook命令:
ansible-playbook -i inventory_ovirt.yml playbook.yaml
方案3:使用Ansible Vault存储敏感参数(可选)
如果需要持久化保存敏感信息,可将认证参数存入Ansible Vault,在Inventory配置中引用Vault加密的变量:
- 创建加密的变量文件
group_vars/all/ovirt_creds.yml:
ansible-vault create group_vars/all/ovirt_creds.yml
- 在文件中写入参数:
engine_url: https://rhv-cluster.example.com/ovirt-engine/api engine_user: user@ldap engine_password: pass
- 修改
inventory_ovirt.yml引用变量:
--- plugin: ovirt.ovirt.ovirt ovirt_url: "{{ engine_url }}" ovirt_cafile: "" ovirt_username: "{{ engine_user }}" ovirt_password: "{{ engine_password }}" ovirt_query_filter: search: 'name=*' case_sensitive: no ...
- 执行playbook时带上Vault密码:
ansible-playbook -i inventory_ovirt.yml playbook.yaml --vault-password-file vault_pass.txt
内容的提问来源于stack exchange,提问作者Alban V
相关产品推荐
相关产品推荐

