当前位置:  开发笔记 > 编程语言 > 正文

Ansible ec2:"这个模块需要boto"

如何解决《Ansibleec2:"这个模块需要boto"》经验,为你挑选了1个好方法。

当我运行这个简单的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   
...

我已经阅读了一些类似的帖子,但我没有看到有效的解决方案.



1> techraf..:

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

你可以运行:

ansible-playbook playbook.yml

并与connection: local在剧中Ansible将VENV使用Python可执行程序集.


当你使用-i localhost,hack时,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" 

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


`ansible localhost -a"哪个python"`
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有