Not a lot to go on... I do see that the two errors are happening in
different places. That might be bad news for you as may mean that any
fix for 1.9.3 might not be the fix needed for 1.7.2. But let's see
what we can find:
This is an error when trying to format this exception into a string
for display. We can probably just substitute that line like this:
- msg = str(ae)
+ from ansible.utils.unicode import to_bytes
+ msg = to_bytes(ae)
That should solve this traceback but the fact we're getting an
exception there means that something else has gone wrong... It could
be something that you're expected to be able to handle by changing
configuration in your network though, so doing this so that you can
see what the actual error is should be helpful.
If we're lucky, once you see what the underlying error is here, you
can correct something else on your network and then 1.7.2 will run for
you as well.
I'll add a patch to the stable-1.9 tree to do this as well. Not sure
if it will make 1.9.3 or not, though.
https://github.com/ansible/ansible/commit/f80494e434d36c1845c9fb830b6bd26ebcf35a89
>> >> fatal: [******] => Traceback (most recent call last):
>> >> File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py",
>> >> line
>> >> 561, in _executor
>> >> exec_rc = self._executor_internal(host, new_stdin)
>> >> File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py",
>> >> line
>> >> 666, in _executor_internal
>> >> return self._executor_internal_inner(host, self.module_name,
>> >> self.module_args, inject, port, complex_args=complex_args)
>> >> File "/usr/lib/python2.7/dist-packages/ansible/runner/__init__.py",
>> >> line
>> >> 756, in _executor_internal_inner
>> >> if not utils.check_conditional(cond, self.basedir, inject,
>> >> fail_on_undefined=self.error_on_undefined_vars):
>> >> File "/usr/lib/python2.7/dist-packages/ansible/utils/__init__.py",
>> >> line
>> >> 255, in check_conditional
>> >>
>> >> UnicodeEncodeError: 'ascii' codec can't encode characters in position
>> >> 15-16: ordinal not in range(128)
1.7.2 is old and I'm not sure of some of the ramifications of making
changes in the code (in newer versions of ansible we've been moving
towards making sure that internally we handle everything as unicode
strings and only using bytes when sending things externally. In 1.7.2
we weren't doing that so most things were likely byte strings. jinja2
takes and returns unicode type, however, so that's likely why we have
a problem converting from what jinja2 is returning to us here.) but we
may be able to fix this with the following code change:
- original = str(conditional).replace("jinja2_compare ","")
+ tmp_conditional = to_bytes(conditional,
errors='strict').replace("jinja2_compare ","")
+ original = tmp_conditional.replace("jinja2_compare ","")
Not sure if that will just bring us another error, further down the
line, though.
-Toshio