Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible ec2:“;本模块所需的boto“;_Ansible_Boto - Fatal编程技术网

Ansible ec2:“;本模块所需的boto“;

Ansible ec2:“;本模块所需的boto“;,ansible,boto,Ansible,Boto,当我运行这个简单的Ansible剧本时: - name: EC2 Test Example hosts: localhost connection: local gather_facts: False tasks: - name: EC2 Instance ec2: # Amazon EC2 key pair name key_name: my-key-pair # Amazon EC2 Security Group

当我运行这个简单的Ansible剧本时:

- name: EC2 Test Example
  hosts: localhost
  connection: local
  gather_facts: False

  tasks:
  - name: EC2 Instance
    ec2:
      # Amazon EC2 key pair name
      key_name: my-key-pair
      # Amazon EC2 Security Group
      group: my-security-group
      instance_type: t2.micro
      # Latest from https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie
      image: ami-221ea342
      wait: yes
    register: ec2
我使用
venv/bin/ansible playbook-I localhost,playbook.yml运行

PLAY [EC2 Test Example] ********************************************************

TASK [EC2 Instance] ************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "boto required for this module"}
    to retry, use: --limit @/Users/admin/temp/ansec2/playbook.retry

PLAY RECAP *********************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=1
很明显,我在使用的venv中安装了boto以及我的默认系统Python:

➜  ansec2 venv/bin/pip list
Package         Version 
--------------- --------
ansible         2.2.1.0 
boto            2.45.0  
boto3           1.4.4   
botocore        1.5.4   
...

我读过一些类似的帖子,但没有找到有效的解决方案。

问题的根本原因是
-I localhost,
hack。你不需要在Ansible中再使用它了

您只需运行:

ansible-playbook playbook.yml
在游戏中使用
connection:local
,Ansible将使用由venv设置的Python可执行文件


当您使用
-i localhost,
hack时,Ansible调用其默认值
/usr/bin/python

在这种情况下,您仍然可以添加
ansible\u python\u解释器
参数,告知ansible使用此特定环境:

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

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

在我最初的帖子之前,我绝对尝试过
source-venv/bin/activate
。我还将boto置于默认的系统python环境中。这些都是显而易见的尝试。两者都没有帮助。
ansible localhost-一个“哪条python”
也使用
-vvv
运行
ansible playbook
,您将看到一行
EXEC/bin/sh-c'./bin/python…
-路径是什么?激活了venv后,
ansible localhost-一个“哪条python”
指向venv python
~/temp/ansec2/venv/bin/python
,使用
-vvv
ansible剧本
显示
EXEC/bin/sh-c'/usr/bin/python
。因此,ansible在被激活时似乎没有使用virtualenv。它也没有使用我在
/usr/local/bin/python
上安装的普通brew python。这不应该发生在
local
连接上,无论如何,您可以指定
ansible\u python\u解释器
并将其指向venv-one。您不再需要这个
-i localhost,
hack。你确定有必要吗?啊哈!!!这是你问题的根本原因。