I'm trying to execute ansible2 commnads...
When I do:
ansible-playbook -vvv -i my/inventory my/playbook.yml I get:
Unexpected Exception: name 'basestring' is not defined the full traceback was:
Traceback (most recent call last): File "/usr/local/bin/ansible-playbook", line 85, in <module> sys.exit(cli.run()) File "/usr/local/lib/python3.4/site-packages/ansible/cli/playbook.py", line 150, in run results = pbex.run() File "/usr/local/lib/python3.4/site-packages/ansible/executor/playbook_executor.py", line 87, in run self._tqm.load_callbacks() File "/usr/local/lib/python3.4/site-packages/ansible/executor/task_queue_manager.py", line 149, in load_callbacks elif isinstance(self._stdout_callback, basestring): NameError: name 'basestring' is not defined
Here is ansible --version:
ansible 2.0.0.2 config file = /etc/ansible/ansible.cfg configured module search path = Default w/o overrides And here is python --version
Python 3.4.3
Ansible below version 2.5 requires Python 2.6 or 2.7 on the control host: Control Node Requirements
basestring is no longer available in Python 3. From What’s New In Python 3.0:
The builtin
basestringabstract type was removed. Usestrinstead. Thestrandbytestypes don’t have functionality enough in common to warrant a shared base class. The2to3tool (see below) replaces every occurrence ofbasestringwithstr.
So the solution is to either upgrade Ansible or downgrade Python.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With