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

Ansible执行剧本报错无法解析inventory_hostname,求解决方案

问题原因与解决方法

错误原因

你遇到的解析问题核心矛盾是:剧本里指定了connection: local(要求本地执行任务),但Ansible仍尝试通过SSH连接目标主机,且变量替换异常导致把inventory_hostname当作实际主机名去解析,最终触发无法解析的错误。

具体诱因:

  • connection: local的作用是让Ansible在控制节点本地执行任务,但如果inventory里只写远程IP(10.1.1.1)却未明确指定连接方式为local,Ansible会默认使用SSH连接逻辑,而非本地执行。
  • 你之前尝试的别名testhost=10.1.1.1只是给IP起了别名,但未配置连接方式,Ansible依然会走SSH连接流程,自然无法解决问题。

解决方法

根据本地执行任务的需求,提供两种可行方案:

方案一:直接使用localhost作为目标主机

修改hosts文件为:

[test]
localhost    ansible_connection=local ansible_user=my_username

剧本里的connection: local可以保留或删除,此时Ansible会直接在控制节点本地执行任务,不会触发SSH连接逻辑。

方案二:保留10.1.1.1并明确指定连接方式

如果需要用10.1.1.1作为主机标识(比如该IP是控制节点的本地网卡IP),修改hosts文件:

[test]
10.1.1.1    ansible_connection=local ansible_user=my_username

同时确保控制节点能正常解析10.1.1.1(本地IP一般默认可解析),此时剧本里的connection: local可留可删,inventory里的ansible_connection=local优先级更高,会强制使用本地执行。

额外检查

如果以上方案无效,检查ansible.cfg配置文件,确认没有全局配置覆盖connection参数,比如是否设置了default_connection=ssh之类的全局默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:07:12