Ansible ec2:“这个模块需要boto”

时间:2017-01-21 01:01:53

标签: ansible boto

当我运行这个简单的Ansible剧本时: - 名称:EC2测试示例   hosts:localhost   连接:本地   gather_facts:错误   任务:    - 名称:EC2实例     EC2:       #Amazon EC2密钥对名称       key_name:my-key-pair       #Amazon EC2安全组       group:my-security-group       instance_type:t2.micro       #最新来自https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie       图片:ami-221ea342       等一下:是的     注册:ec2 我用venv / bin / ansible-playbook -i localhost,playbook.yml运行: 播放[EC2测试示例] ******************************************** ************ 任务[EC2实例] ********************************************* *************** 致命:[localhost]:失败! => {“已更改”:false,“failed”:true,“msg”:“此模块需要boto”}     要重试,请使用:--limit @ / Users / admin / temp / ansec2 / playbook.retry 回放************************************************* ********************* localhost:ok = 0 changed = 0 unreachable = 0 failed = 1 显然,我在我正在使用的venv中安装了boto以及我的默认系统Python: ➜ansec2venv / bin / pip列表 包版本 --------------- -------- ansible 2.2.1.0 boto 2.45.0 boto3 1.4.4 botocore 1.5.4 ... 我已经阅读了一些类似的帖子,但我没有看到有效的解决方案。

1 个答案:

答案 0 :(得分:10)

问题的根本原因是-i localhost,黑客攻击。你不再需要在Ansible中使用它了。

你可以跑:

ansible-playbook playbook.yml

在游戏中使用connection: local Ansible将使用由venv。

设置的Python可执行文件

当您使用-i localhost,黑客时,Ansible会调用其默认/usr/bin/python

在这种情况下,您仍然可以添加ansible_python_interpreter参数来告诉Ansible使用此特定环境:

ansible-playbook -i localhost, playbook.yml --extra-vars "ansible_python_interpreter=/Users/admin/temp/ansec2/venv/bin/python" 

但我认为你应该避免使用第一种方法。