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

Ansible如何从inventory清单文件中获取rhel组下的ansible_user变量值

问题解答:Ansible获取inventory组变量的正确方式

错误原因

你之前的两种写法均不符合Ansible变量的访问规则:

  • hostvars是存储单主机维度变量的字典,仅接受主机名/IP作为键,传入组名rhel自然找不到对应主机,同时你写的hostvars.[rhel]语法也有误,正确的字典访问写法是hostvars['键名']或hostvars.键名
  • 第二种写法直接调用rhel.ansible_user,Ansible全局不存在名为rhel的根变量,会直接报未定义

正确写法(两种,按需选择)

写法1:兼容所有Ansible版本(推荐)

因为rhel组的ansible_user是组公共变量,组内所有主机都会继承该值,所以可以取组内任意一台主机的对应变量即可:

- set_fact:
    SSHUSER: "{{ hostvars[groups['rhel'][0]].ansible_user }}"

说明:groups['rhel']会返回rhel组下所有主机的列表,取下标0取到组内第一台主机,再从hostvars中取该主机继承的ansible_user值,和组级变量完全一致。

写法2:直接读取组变量(Ansible 2.10+支持)

使用Ansible内置的inventory查找插件直接读取组配置:

- set_fact:
    SSHUSER: "{{ lookup('ansible.builtin.inventory', 'rhel', get_hosts=False).vars.ansible_user }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:45:02