2017-01-21 4 views
5

Когда я запускаю эту простую анзибль пьес:анзибль ec2: «бото требуется для этого модуля»

- 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 что я использую так же, как моя система по умолчанию 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 
... 

Я прочитал несколько подобных сообщений, и я не вижу приста королевского решения.

+0

Вам больше не нужен этот '-i localhost,' hack. Вы уверены, что это необходимо? Аааа !!! Это основная причина вашей проблемы. – techraf

ответ

3

Основной причиной вашей проблемы является взлом -i localhost,. Вам больше не нужно использовать его в Ansible.

Вы можете просто запустить:

ansible-playbook playbook.yml 

И connection: local в игре анзибль будет использовать Python исполняемый набор, venv.


При использовании -i localhost, хака, анзибль называет его по умолчанию /usr/bin/python.

В этом случае вы можете добавить параметр ansible_python_interpreter сказать анзибль использовать эту специфическую среду:

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

Но я думаю, что вы должны избегать его и использовать первый метод.

+0

Я абсолютно пробовал 'источник venv/bin/activate' перед моим оригинальным сообщением. Я также поместил boto в среду python по умолчанию. это очевидные вещи, которые нужно попробовать. ни помогли. – clay

+1

'ansible localhost -a", который python "' – techraf

+1

Также запустите 'ansible-playbook' с' -vvv', и вы увидите строку 'EXEC/bin/sh -c '.../bin/python ...' - Каков путь? – techraf

Смежные вопросы