I guys, I need to some help on this one.
I create a task to upload some files on an S3 bucket.
When running the playbook I get the following error:
FAILED! => {“changed”: false, “msg”: “dateutil required for this module”}
Now I check if python-dateutil is install in pip and it does. Here is what I have
ansible==2.9
boto==2.49.0
boto3==1.9.178
botocore==1.12.178
python-dateutil==2.8.2
python 3.8
This is the task, based on this page https://docs.ansible.com/ansible/2.9/modules/s3_sync_module.html
- name: Sync static folder to S3
s3_sync:
bucket: myS3HomeBuckek
file_root: /var/www/project1/.static
key_prefix: project/static
file_change_strategy: force
permission: public-read
region: us-east-2
run_once: yes
tags: Static
I have tried to uninstall, reinstall with --no-cache-dir and even with --force-reinstall but the
msg still come back. Has anyone had this issue?
Its an old ansible (v2.9) that I am slowly migrating to the most recent one.
Any help is appreciated.
Thanks
Hi Mr Visser
Thanks for answering
Here is the output
ansible 2.9.0
config file = /etc/ansible/ansible.cfg
configured module search path = [‘/home/ansible/.ansible/plugins/modules’, ‘/usr/share/ansible/plugins/modules’]
ansible python module location = /opt/venv/venv_ansible29/lib/python3.8/site-packages/ansible
executable location = /opt/venv/venv_ansible29/bin/ansible
python version = 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0]
I realize the path in the “configured module search path” were not there. I created them but not if that is releated.
OK that should work.
What is the exact command that you use to run the playbook?
What are the outputs of:
which ansible
which ansible-playbook
/opt/venv/venv_ansible29/bin/pip list
As a side note, I see you’re using the 2.9.0 version, which is the very first release of that minor version.
For instance I couldn’t even run that here as I run into “ERROR! Unexpected Exception, this is probably a bug: cannot pickle ‘module’ object”.
A first good step in your upgrade would be to start using the latest patch release of 2.9 (which is 2.9.27).
HI sorry for the delay
I think I figured out the reason. If thats the case too bad that ansible v 2.8 and 2.9 did not guide me throught this but version 2.10 did. Let me explain.
I had the same issue with v 2.8 and 2.9, Now I decided to create a new venv with 2.10 and when I ran the playbook it now gave me way more details and from what I see is releated to the fact that Ansible is using the wrong Python interpreter and should be using /usr/bin/python3 while its usr/bin/python. On the server I want to execute the task (through delegate_to), we had to do at some point a python alternatives to switch from python 2.7 to 3.6. Once I added this variable in my playbook ansible_python_interpreter: “/var/virtualenv/bin/python3”, I could connect to the S3 bucket. Now have to fix an ACL permissions to be able to push files in it. That is a temporary fix as we will be migrating all our server to a more recent OS in the next weeks.
Thanks again for your assistance.