Ansible 2.9调用community.aws.ec2_instance_info模块无法识别报错求助
问题根因
- Ansible 2.9 版本对集合(Collection)的原生支持存在缺陷:你输出的
ansible --version里的configured module search path没有包含用户家目录下的.ansible/collections路径,Ansible无法扫描到你安装的社区集合。 - 集合版本不兼容:你强制重装的
community.aws 2.0.0、amazon.aws 2.0.0最低要求Ansible 2.10及以上版本,和你在用的Ansible 2.9.27完全不兼容,之前正常的机器是因为安装了兼容2.9的1.x版本集合。
修复步骤
步骤1:卸载现有不兼容的高版本集合
执行命令:
ansible-galaxy collection uninstall community.aws amazon.aws -y
步骤2:安装兼容Ansible 2.9的集合版本
1.x系列是最后一个兼容Ansible 2.9的版本分支,执行以下命令安装指定版本:
ansible-galaxy collection install community.aws:1.5.0 amazon.aws:1.5.0
如果需要所有用户都能使用集合,可以安装到全局路径:
sudo ansible-galaxy collection install community.aws:1.5.0 amazon.aws:1.5.0 -p /usr/share/ansible/collections
步骤3:修改Ansible配置添加集合搜索路径
编辑全局Ansible配置文件/etc/ansible/ansible.cfg,在[defaults]配置段下新增以下内容:
[defaults] collections_paths = /home/ubuntu/.ansible/collections:/usr/share/ansible/collections # 如果需要支持root用户运行Ansible,可改为下面的配置 # collections_paths = /home/ubuntu/.ansible/collections:/root/.ansible/collections:/usr/share/ansible/collections
步骤4:验证修复结果
执行以下命令检查Ansible是否能正常识别带前缀的模块:
ansible-doc community.aws.ec2_instance_info
如果正常输出模块说明文档,再运行你的测试Playbook,即可正常调用community.aws.ec2_instance_info模块。
注意事项
后续安装其他Ansible集合时,需先确认版本兼容性,避免安装过高版本导致和现有Ansible 2.9环境不匹配。
内容的提问来源于stack exchange,提问作者Ciprian Stoica
相关产品推荐
相关产品推荐

