You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

已确认的配置信息

  1. Python环境依赖
    已在Ansible使用的Python 2.7环境中安装boto3、botocore:

    python2.7 -m pip freeze
    boto3==1.26.69
    botocore==1.29.69
    
  2. inventory配置文件

    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_address
    
  3. ansible.cfg插件启用配置

    [inventory]
    enable_plugins = vmware_vm_inventory, amazon.aws.aws_ec2
    
  4. amazon.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 installed
    
  5. AWS凭证配置
    已通过环境变量配置AWS凭证:

    env
    AWS_ACCESS_KEY_ID=XXXXXXXX
    AWS_SECRET_ACCESS_KEY=XXXXXXXXXX
    AWS_SESSION_TOKEN=XXXXXXXXXX
    

排查方向

  1. 版本兼容性校验
    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
    
  2. 配置文件合法性检查

    • 确认ec2.aws.yml文件路径是否与执行命令时的工作目录匹配
    • 用YAML校验工具检查配置文件的格式(缩进、引号等)是否存在语法错误
  3. 集合加载路径验证
    查看amazon.aws集合的安装位置,确保在Ansible的搜索路径内:

    /opt/ansible/bin/ansible-galaxy collection list amazon.aws
    

    若路径不在搜索范围内,在ansible.cfg中添加:

    [defaults]
    collections_paths = ~/.ansible/collections:/opt/ansible/collections
    
  4. Python环境一致性检查
    确认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
    
  5. 缓存临时禁用测试
    注释掉inventory配置中的cache: yes和cache_timeout参数,重新执行命令,排查是否为缓存文件损坏导致的问题。

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 14:50:21