Hi,
I'm having a little problem. When I run a simple playbook, on some servers
I get a UnicodeEncodeError and the playbook is not executed.
I have the role "users_admin", it creates 3 groups, makes sure that 4 users
exist and have a specific password and set a root password if it has
changed.
root@cm:/etc/ansible/roles/users_admin# tree
.
└── tasks
└── main.yml
1 directory, 1 file
root@cm:/etc/ansible/roles/users_admin# cat tasks/main.yml
---
- name: Global group 'admins'
group: name=admins state=present gid=2000
- name: Global group 'support'
group: name=support state=present gid=2001
- name: Global group 'developers'
group: name=developers state=present gid=2002
- name: Common 'admin' users
user: name={{ item.name }} comment={{ item.gecos }} group=admins
state=present uid={{ item.uid }} update_password=always password={{
item.passwd }} shell=/bin/bash
with_items:
- name: test1
gecos: "test1"
uid: 2050
passwd:
$6$2trU.wqo$c.QAHAngzhx.i6VwGM9zGoh8KdX3e.2EAnzYf3SDdIBWZFVo4OdHQjPxVl/8wmmD6hWYnxeyMF9rLAfNMk3oa0
- name: test2
gecos: "test2"
uid: 2051
passwd:
$6$xIKLieVe$oFdw1N/FjdPQzdMGkViaG8UMTMwGhNBKvtVxMIbcDFTu3udXYtrH5un0Obmr6d9gDC66DK/dNfpP6jlESRtan/
- name: test3
gecos: "test3"
uid: 2052
passwd:
$6$9bJs8kiu$lS.Jz.cGdx5J3s.Mw5V80GzO.U6tLLMwztuDZJsAe2JjpYLCedR96fAHbHVaozv0zRUrtexErdgTYQU0o0tCh0
- name: test4
gecos: "test4"
uid: 2053
passwd:
$6$tmUQlubJ$0HI532QrAnlTGHwJlLEuGU2/uSAr42I2Y6aEFBbPlmXborYOlmVeCl5vI.YBLo3HDTFt/mx98HXv7yMqqgifa/
- name: Set root password
user: name=root update_password=always
password=$6$HqRU2uvR$6GV6CYTbtkxpbX7POk9FGglzK3M4G8icIuEWlxnllDe4FswqsQQbIaEsbT/JhaQe9ot4pAS8A/1RDurOb1e/p.
root@cm:/etc/ansible/roles/users_admin#
And this is the playbook:
root@cm:/etc/ansible/playbooks# cat test.yml
---
- name: Common settings
hosts: all
roles:
- users_admin
root@cm:/etc/ansible/playbooks#
When I run the playbook, It fails in a newly installed Debian 7.5:
root@cm:/etc/ansible/playbooks# ansible-playbook test.yml
PLAY [Common settings]
********************************************************
GATHERING FACTS
***************************************************************
ok: [test]
TASK: [users_admin | Global group 'admins'] ***************
ok: [test]
TASK: [users_admin | Global group 'support'] **************
ok: [test]
TASK: [users_admin | Global group 'developers'] ***********
ok: [test]
TASK: [users_admin | Common 'admin' users] ****************
fatal: [test] => Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py", line 532,
in _executor
exec_rc = self._executor_internal(host, new_stdin)
File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py", line 660,
in _executor_internal
complex_args=complex_args
File "/usr/lib/pymodules/python2.7/ansible/runner/__init__.py", line 809,
in _executor_internal_inner
module_args = template.template(self.basedir, module_args, inject,
fail_on_undefined=self.error_on_undefined_vars)
File "/usr/lib/pymodules/python2.7/ansible/utils/template.py", line 321,
in template
varname = template_from_string(basedir, varname, vars,
fail_on_undefined)
File "/usr/lib/pymodules/python2.7/ansible/utils/template.py", line 543,
in template_from_string
data = data.decode('utf-8')
File "/usr/lib/python2.7/encodings/utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in
position 83: ordinal not in range(128)
FATAL: all hosts have already failed -- aborting
PLAY RECAP
********************************************************************
to retry, use: --limit @/root/test.retry
test : ok=4 changed=0 unreachable=1 failed=0
root@cm:/etc/ansible/playbooks#
Googling I
found:
http://mypy.pythonblogs.com/12_mypy/archive/1253_workaround_for_python_bug_ascii_codec_cant_encode_character_uxa0_in_position_111_ordinal_not_in_range128.html
Output:
root@test:~# python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'ascii'
>>>
root@test:~#
root@test:~# echo $LANG
en_US.UTF-8
root@test:~#
My Ansible version:
root@cm:/etc/ansible# ansible-playbook --version
ansible-playbook 1.5.5
root@cm:/etc/ansible#
Any idea what I'm doing wrong?
If it helps, this problem does NOT occur on every server, It could be
something misconfigured on the client side as the same playbook works
perfectly on other servers.
Thanks in advanced.
Best regards,
Joel.
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/f7e9ae39-f234-4f09-a414-2cbaba9dc8a4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.