Ansible aws_ec2清单插件verify_file()验证失败求助
Ansible aws_ec2清单插件解析失败问题排查
虚拟机更新后,Ansible aws_ec2清单插件无法正常工作,执行ansible-inventory命令时持续报错,提示插件拒绝解析配置文件。
报错信息
/opt/ansible/bin/ansible-inventory -i inventory/ec2.aws.yml --graph -vvvvvv ansible-inventory 2.9.2 config file = /home/XXXXX/ansible/ansible.cfg configured module search path = [u'/home/XXXXX/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /opt/ansible/lib/python2.7/site-packages/ansible executable location = /opt/ansible/bin/ansible-inventory python version = 2.7.5 (default, Jun 28 2022, 15:30:04) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] Using /home/XXXXX/ansible/ansible.cfg as config file setting up inventory plugins ansible_collections.amazon.aws.plugins.inventory.aws_ec2 declined parsing /home/XXXXX/ansible/XXXXX/ec2.aws.yml as it did not pass its verify_file() method
已确认的配置信息
Python环境依赖
已在Ansible使用的Python 2.7环境中安装boto3、botocore:python2.7 -m pip freeze boto3==1.26.69 botocore==1.29.69inventory配置文件
plugin: amazon.aws.aws_ec2 cache: yes cache_timeout: 600 regions: - eu-central-1 validate_certs: False keyed_groups: - prefix: os key: tags['OS'] hostnames: - tag:Name compose: ansible_host: private_ip_addressansible.cfg插件启用配置
[inventory] enable_plugins = vmware_vm_inventory, amazon.aws.aws_ec2amazon.aws集合安装状态
/opt/ansible/bin/ansible-galaxy collection install amazon.aws Process install dependency map Starting collection install process Skipping 'amazon.aws' as it is already installedAWS凭证配置
已通过环境变量配置AWS凭证:env AWS_ACCESS_KEY_ID=XXXXXXXX AWS_SECRET_ACCESS_KEY=XXXXXXXXXX AWS_SESSION_TOKEN=XXXXXXXXXX
排查方向
版本兼容性校验
Ansible 2.9.2属于旧版本,当前安装的boto3/botocore(1.26.69/1.29.69)版本过高,存在兼容性风险。建议降级到与Ansible 2.9兼容的版本:python2.7 -m pip install boto3==1.18.69 botocore==1.21.69配置文件合法性检查
- 确认
ec2.aws.yml文件路径是否与执行命令时的工作目录匹配 - 用YAML校验工具检查配置文件的格式(缩进、引号等)是否存在语法错误
- 确认
集合加载路径验证
查看amazon.aws集合的安装位置,确保在Ansible的搜索路径内:/opt/ansible/bin/ansible-galaxy collection list amazon.aws若路径不在搜索范围内,在ansible.cfg中添加:
[defaults] collections_paths = ~/.ansible/collections:/opt/ansible/collectionsPython环境一致性检查
确认Ansible使用的Python环境与安装boto3的环境一致:/opt/ansible/bin/ansible --version | grep "python version" python2.7 -c "import boto3; print(boto3.__version__)"若不一致,在ansible.cfg中指定Python解释器:
[defaults] interpreter_python = /usr/bin/python2.7缓存临时禁用测试
注释掉inventory配置中的cache: yes和cache_timeout参数,重新执行命令,排查是否为缓存文件损坏导致的问题。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

