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

AWS Systems Manager运行Ansible playbook报no hosts matched问题咨询

问题根因

AWS-ApplyAnsiblePlaybooks SSM文档默认的执行命令硬编码了-i localhost -c local参数:

  • -i localhost 强制指定Ansible的主机清单仅包含localhost这一个节点,不会自动加载你Github仓库里存放的ini格式hosts文件
  • -c local 强制使用本地连接方式,不会通过SSH等远程协议连接清单里的其他节点

Ansible运行时的有效主机清单里根本不存在你定义的dev主机组,自然会触发Could not match supplied host pattern, ignoring: dev警告,最终提示没有匹配的可执行主机。
你将playbook中hosts配置改为all后可以正常运行,是因为当前有效清单里仅有的localhost节点会被all规则匹配到,本质还是没有用到你自定义的hosts清单。

解决方法

根据实际使用场景选择对应方案即可:

  • 方案1:需要使用自定义hosts清单执行跨节点任务
    运行AWS-ApplyAnsiblePlaybooks文档时,找到清单文件(Inventory File)配置项,填写你仓库中hosts文件的相对路径(比如文件存放在仓库根目录就填./hosts),替换默认的localhost值。同时需要修改连接方式参数为ssh,保证执行命令的目标实例可以正常解析、连通你清单里配置的server.example.com节点,且具备对应SSH访问权限。
  • 方案2:仅需要在SSM选定的目标实例本地执行任务
    不需要单独维护自定义hosts文件:如果要在所有选定的目标实例上执行,直接将playbook的hosts配置为localhost,保留connection: local配置即可;如果需要按dev等环境分组执行,可以在运行Run Command时通过额外变量传入环境标识,在playbook中用when条件判断当前节点是否匹配环境要求,再决定是否执行任务。
  • 方案3:默认文档参数无法满足需求
    复制AWS官方提供的AWS-ApplyAnsiblePlaybooks托管文档创建自定义版本,修改文档中硬编码的Ansible执行命令,移除-i localhost -c local的固定配置,替换为你实际需要的清单路径、连接方式等参数,后续使用自定义文档执行Run Command即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:18:25