如何在Ansible YAML清单文件中正确指定localhost?
解决Ansible本地清单SSH错误问题
正确的本地清单配置
你第一种清单写法本身是有效的,核心是必须通过ansible_connection: local让Ansible跳过SSH直接执行本地操作:
all: hosts: localhost: ansible_connection: local
关键注意事项
执行命令必须指定清单文件
如果你执行Ansible命令时没通过-i参数指定这个自定义清单,Ansible会加载默认清单(比如/etc/ansible/hosts),而默认清单里的localhost通常未配置本地连接参数,因此会触发SSH连接错误。示例执行命令:ansible all -i your_inventory.yml -m ping简化清单的补全方案
若想用第二种简化写法,需要补充全局变量或配置来指定连接方式:- 给清单添加全局变量:
all: hosts: localhost: vars: ansible_connection: local - 或在
ansible.cfg中配置默认本地连接:[defaults] inventory = ./your_inventory.yml [connection] ansible_connection = local
- 给清单添加全局变量:
排查步骤
如果仍出现SSH错误,先确认清单配置是否被正确加载:
ansible-inventory -i your_inventory.yml --list
查看输出中localhost的变量列表,确认是否包含ansible_connection: local。如果没有,说明清单路径指定错误,或者配置被ANSIBLE_INVENTORY等环境变量覆盖。
内容的提问来源于stack exchange,提问作者iamsimonsmale
相关产品推荐
相关产品推荐

