3.1.1.2 主机与组定义 你有没有在凌晨两点,盯着 Ansible 的 报错信息发呆过? 你确认路径没错,文件权限也放开了, 却死活不认——不是语法错误,不是缩进问题,甚至不是 YAML 或 INI 格式混淆。它就卡在那一行: 而真正出问题的,是这行看似无害的定义: 符号没有被展开。 Ansible 在解析静态清单时,不会执行 shell 展开(tilde expansion)。它把 当作字面量字符串传给了 paramiko 或 openssh,而 openssh 拒绝接受以波浪线开头的私钥路径——它只认绝对路径或当前工作目录下的相对路径。 这不是 bug,是设计选择;不是文档疏漏,是隐性契约:Ansible 的静态 INI 清单,是一个纯文本解析上下文,不继承 shell 环境语义。