ansible配置文件加载错误本质是未读取用户修改的ansible.cfg,而是按优先级加载了其他路径:先查ansible_config环境变量,再查当前目录、家目录、系统级路径;可通过ansible --version确认实际加载路径,用ansible_config显式指定验证,再通过log_path日志验证参数是否生效。

Ansible 配置文件路径加载错误,本质是它没读你改的那个 ansible.cfg,而是读了别的——常见表现是:改了 host_key_checking = False 却仍提示 SSH 确认,或设了 inventory = ./myhosts 却报“no hosts matched”。排查核心就四步:看它到底加载了哪个、为什么跳过你放的、怎么强制它读对、以及如何验证生效。
确认当前实际加载的配置路径
直接运行:ansible --version
重点看输出里 config file 这一行。如果显示 config file = None,说明完全没加载任何配置;如果显示具体路径(如 /home/user/ansible.cfg),就以它为准——别凭印象猜。
这个路径一定是按优先级顺序找到的第一个有效文件,不是你“以为”它该读的那个。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
检查配置文件查找顺序是否被跳过
Ansible 按固定顺序找配置文件,遇到第一个存在且可读的就停:
• ANSIBLE_CONFIG 环境变量指定的路径(最高优先)
• 当前目录下的 ansible.cfg
• 用户家目录的 ~/.ansible.cfg
• 系统级 /etc/ansible/ansible.cfg
常见干扰项:
• 当前目录下有 ansible.cfg,但权限为 600 且不属于当前用户 → 被跳过
• 家目录下有个空的 .ansible.cfg 或只有注释 → 被当作有效配置加载,导致后续路径不生效
• ANSIBLE_CONFIG 环境变量残留(比如之前调试设过但没 unset)→ 强制读指定路径,哪怕文件不存在也会报错
临时绕过路径歧义,显式指定配置
不用猜、不依赖环境,用命令行强制指定:ANSIBLE_CONFIG=./my-ansible.cfg ansible-playbook site.yml
或ansible -i inventory.ini --extra-vars "ansible_python_interpreter=/usr/bin/python3" -m ping all
这样能快速验证:问题出在路径加载逻辑,还是配置内容本身。如果显式指定后正常,就坐实是路径冲突。
验证配置项是否真正生效
光看路径不够,得确认里面写的参数真起了作用:
• 在 ansible.cfg 的 [defaults] 段加一行:log_path = ./ansible-debug.log(确保当前目录可写)
• 执行任意命令,比如 ansible all -m ping
• 查看生成的日志,开头几行会明确打印:Loaded configuration from: /path/you/thought/it/was.cfgUsing inventory: /xxx/hostsSetting default timeout to: 10(对应你设的 timeout 值)
日志里没出现你修改的参数?说明它根本没读那个文件,或者语法写错了(比如漏了 [defaults] 段头)。










