Ansible动态清单脚本未被执行的问题排查求助
问题解决:Ansible脚本清单插件拒绝解析自定义脚本
问题现象
自定义Python脚本手动运行完全正常:
python scripts/main.py --list
main.log会正常追加日志,但用ansible-inventory调用时直接失败,脚本完全没被执行(log为空),关键错误提示:
script declined parsing /xxx/scripts/main.py as it did not pass its verify_file() method
核心原因
Ansible的script inventory插件在执行脚本前,会通过verify_file()做前置校验,只有满足要求的脚本才会被执行。你的脚本没通过这个校验,所以直接被跳过了。
解决步骤
给脚本添加可执行权限
执行命令赋予脚本执行权限:chmod +x scripts/main.py添加shebang头
在脚本最顶部添加一行shebang,指定脚本的解释器:#!/usr/bin/env python3这行是让系统明确知道该用哪个Python版本运行脚本,是可执行脚本的必要标识。
测试脚本独立运行
不用python前缀直接运行脚本,确认功能正常:./scripts/main.py --list如果能正常输出Ansible兼容的清单格式,同时
main.log写入日志,就说明符合插件要求了。重新用Ansible调用
再次执行命令:ansible-inventory -i scripts/main.py --list -vvvv此时脚本应该会被正常执行,生成正确的清单内容。
内容的提问来源于stack exchange,提问作者E. Jaep
相关产品推荐
相关产品推荐

