2017-01-21 1 views
5

Quand je lance ce Ansible simple, PlayBook:Ansible EC2: "Boto nécessaire pour ce module"

- 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 

Je cours avec 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 

Alors évidemment, j'ai Boto installé dans le venv que je me sers aussi bien que mon système par défaut 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 
... 

J'ai lu quelques messages similaires et je ne vois pas wor solution roi.

+0

Vous n'avez plus besoin de ce hack «-i localhost». Êtes-vous sûr que c'est nécessaire? Ahhh !!! C'est la cause première de votre problème. – techraf

Répondre

3

La cause de votre problème est le hack -i localhost,. Vous n'avez plus besoin de l'utiliser dans Ansible.

Vous pouvez juste lancer:

ansible-playbook playbook.yml 

Et avec connection: local dans le jeu Ansible utilisera l'ensemble exécutable Python par venv.


Lorsque vous utilisez le hack -i localhost,, Ansible appelle sa valeur par défaut /usr/bin/python.

Dans ce cas, vous pouvez toujours ajouter le paramètre ansible_python_interpreter dire Ansible utiliser cet environnement spécifique:

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

Mais je pense que vous devriez éviter et utiliser la première méthode.

+0

J'ai absolument essayé 'source venv/bin/activate' avant mon post original. Je mets aussi boto dans l'environnement python système par défaut. ce sont les choses évidentes à essayer. aucun n'a aidé. – clay

+1

'ansible localhost -a" qui python "' – techraf

+1

Exécutez aussi 'ansible-playbook' avec' -vvv' et vous verrez une ligne 'EXEC/bin/sh -c '.../bin/python ...' - Quel est le chemin? – techraf