You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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。

操作步骤:

  1. 修改inventory_ovirt.yml,去掉模板变量,让插件自动读取环境变量:
---
plugin: ovirt.ovirt.ovirt
ovirt_cafile: ""
ovirt_query_filter:
  search: 'name=*'
  case_sensitive: no
...
  1. 在执行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。

操作步骤:

  1. 创建模板文件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
...
  1. 使用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
  1. 执行原playbook命令:
ansible-playbook -i inventory_ovirt.yml playbook.yaml

方案3:使用Ansible Vault存储敏感参数(可选)

如果需要持久化保存敏感信息,可将认证参数存入Ansible Vault,在Inventory配置中引用Vault加密的变量:

  1. 创建加密的变量文件group_vars/all/ovirt_creds.yml:
ansible-vault create group_vars/all/ovirt_creds.yml
  1. 在文件中写入参数:
engine_url: https://rhv-cluster.example.com/ovirt-engine/api
engine_user: user@ldap
engine_password: pass
  1. 修改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
...
  1. 执行playbook时带上Vault密码:
ansible-playbook -i inventory_ovirt.yml playbook.yaml --vault-password-file vault_pass.txt

内容的提问来源于stack exchange,提问作者Alban V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 11:02:51