aws_s3 module fails, says Boto3 is missing when it is not - bug?

1,420 views
Skip to first unread message

gigi...@gmail.com

unread,
Mar 22, 2019, 5:18:30 PM3/22/19
to Ansible Project
This Play installs python3, pip3, boto3 and botocore, and trys to use aws_s3 module to download a file:

TASK [run yum update -y using yum module] ***************************************************************************************
ok: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Install python3 and pip3] *************************************************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Install boto3 and botocore with pip3 module] ******************************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [Create a directory if it does not exist using file module] ****************************************************************
changed: [ip-10-200-2-137.us-west-2.compute.internal]

TASK [downlod file from s3 with aws_s3 module] **********************************************************************************
fatal: [ip-10-200-2-137.us-west-2.compute.internal]: FAILED! => {"changed": false, "msg": "Python modules \"botocore\" or \"boto3\" are missing, please install both"}

It fails because it says boto3 is missing, but it actually is not:

From the Target host you can see that boto3 is installed:

[ec2-user@ip-10-200-2-137 ~]$ pip3 freeze
boto3==1.9.120
botocore==1.12.120
docutils==0.14
jmespath==0.9.4
python-dateutil==2.8.0
s3transfer==0.2.0
six==1.12.0
urllib3==1.24.1
[ec2-user@ip-10-200-2-137 ~]

Is this is bug? Thank you for any help 

This is the task that fails:
- name: downlod file from s3 with aws_s3 module aws_s3: bucket: mybucket object: mybucket/jre-8u201-linux-x64.tar.gz dest: /home/ec2-user/updater/jre-8u201-linux-x64.tar.gz mode: get

Sudheer S

unread,
Mar 23, 2019, 7:51:46 AM3/23/19
to ansible...@googlegroups.com
--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/e81f25a5-1104-4b36-b2a4-5a037610a9b9%40googlegroups.com.

This doesn't look like a bug. It looks like boto is not available via the Python interpreter Ansible is using on the target.

SSH on to the target, start the Python interpreter and see if you can import boto:


python
Python 2.7.12 (default, Nov 12 2018, 14:36:49)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto
>>>

-

Sudheer S

gigi...@gmail.com

unread,
Mar 25, 2019, 2:26:19 PM3/25/19
to Ansible Project
Thank you - the target host has Python2 and Python3 installed:
[ec2-user@ip-10-200-2-198 ~]$ which python
/usr/bin/python
[ec2-user@ip-10-200-2-198 ~]$ which python3
/usr/bin/python3

Python2 is installed by default. Python3 was installed by my playbook. Using your example I can see that Python2 does not have boto. Python3 does have boto3 which was also installed by my playbook.

My ansible cfg looks like this:

[defaults]
private_key_file=/home/ec2-user/key.pem
ansible_python_interpreter=/usr/bin/python3

I thought I could force ansible to use python3, but it did not work. I got the same result.  

gigi...@gmail.com

unread,
Mar 25, 2019, 5:36:01 PM3/25/19
to Ansible Project
I was able to get this working by specifying the interpreter at the task level:

- name: downlod file from s3 with aws_s3 module aws_s3: vars: ansible_python_interpreter: /usr/bin/python3 bucket: kavise-launch-data object: jre-8u201-linux-x64.tar.gz dest: /home/ec2-user/updater/jre-8u201-linux-x64.tar.gz 
Reply all
Reply to author
Forward
0 new messages