![Ansible ec2_instance_facts 抱怨 boto3 未安装(但已安装)](https://linux22.com/image/737574/Ansible%20ec2_instance_facts%20%E6%8A%B1%E6%80%A8%20boto3%20%E6%9C%AA%E5%AE%89%E8%A3%85%EF%BC%88%E4%BD%86%E5%B7%B2%E5%AE%89%E8%A3%85%EF%BC%89.png)
尝试使用 Ansible 通过如下简单的剧本检索 AWS 元数据:
---
- hosts: tag_mytagname_mytagvalue
tasks:
- ec2_instance_facts
- ping
我收到有关 boto3 缺失的错误(尽管已经安装)
任务 [ec2_instance_facts] **************************************************************************************************************** 致命:[ip-10-186-27-189.ec2.internal]:失败! => {“changed”: false,“msg”: “此模块需要 boto3”}
答案1
这是因为 Ansible 正在尝试检索 EC2 事实在远程主机上(因为这就是我告诉它的,哦!)
需要使用本地主机检索事实:
---
- hosts: localhost
tasks:
- ec2_instance_facts:
感谢这个 reddit 提供的解决方案(但在 SF 上发布更有用):https://www.reddit.com/r/ansible/comments/8p4l9f/awsec2_group_facts_error_boto3_required_for_this/
答案2
在类似情况下,我收到了完全相同的错误消息——当使用模块时ec2_instance_facts
(connection: local
作为将远程任务与本地任务混合的更大任务列表的一部分):
---
- ec2_instance_facts:
connection: local
delegate_to: localhost
在这种情况下,解决方案是使用connection: local
:
---
- ec2_instance_facts:
delegate_to: localhost