Ansible ошибка кодировки UTF-8 русский язык
помогите пожалуйста при запуске playbook в Ansible c таким содержимым получаю ошибку
tasks:
- name: generate prefix
netbox.netbox.netbox_prefix:
netbox_url: "http://192.168.0.1"
netbox_token: ""
data:
prefix: 192.168.1.0/24
description: тестовая сеть
comments: тест
state: present
Если поле descriprion и comments сделать на английском, ошибки не возникает.
Сама ошибка:
ansible-playbook netbox_add_prefix.yml -vvv
ansible-playbook 2.10.8
config file = /root/ansible.cfg
configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
Using /root/ansible.cfg as config file
host_list declined parsing /root/hosts/hosts.ini as it did not pass its verify_file() method
script declined parsing /root/hosts/hosts.ini as it did not pass its verify_file() method
auto declined parsing /root/hosts/hosts.ini as it did not pass its verify_file() method
yaml declined parsing /root/hosts/hosts.ini as it did not pass its verify_file() method
Parsed /root/hosts/hosts.ini inventory source with ini plugin
ERROR! Unexpected Exception, this is probably a bug: 'utf-8' codec can't encode characters in position 344-349: surrogates not allowed
the full traceback was:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/ansible/parsing/utils/yaml.py", line 71, in from_yaml
new_data = json.loads(data, cls=AnsibleJSONDecoder)
File "/usr/lib/python3.9/json/__init__.py", line 359, in loads
return cls(**kw).decode(s)
File "/usr/lib/python3.9/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.9/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/ansible-playbook", line 123, in <module>
exit_code = cli.run()
File "/usr/lib/python3/dist-packages/ansible/cli/playbook.py", line 129, in run
results = pbex.run()
File "/usr/lib/python3/dist-packages/ansible/executor/playbook_executor.py", line 91, in run
pb = Playbook.load(playbook_path, variable_manager=self._variable_manager, loader=self._loader)
File "/usr/lib/python3/dist-packages/ansible/playbook/__init__.py", line 51, in load
pb._load_playbook_data(file_name=file_name, variable_manager=variable_manager)
File "/usr/lib/python3/dist-packages/ansible/playbook/__init__.py", line 70, in _load_playbook_data
ds = self._loader.load_from_file(os.path.basename(file_name))
File "/usr/lib/python3/dist-packages/ansible/parsing/dataloader.py", line 97, in load_from_file
parsed_data = self.load(data=file_data, file_name=file_name, show_content=show_content, json_only=json_only)
File "/usr/lib/python3/dist-packages/ansible/parsing/dataloader.py", line 80, in load
return from_yaml(data, file_name, show_content, self._vault.secrets, json_only=json_only)
File "/usr/lib/python3/dist-packages/ansible/parsing/utils/yaml.py", line 79, in from_yaml
new_data = _safe_load(data, file_name=file_name, vault_secrets=vault_secrets)
File "/usr/lib/python3/dist-packages/ansible/parsing/utils/yaml.py", line 48, in _safe_load
loader = AnsibleLoader(stream, file_name, vault_secrets)
File "/usr/lib/python3/dist-packages/ansible/parsing/yaml/loader.py", line 36, in __init__
CParser.__init__(self, stream)
File "yaml/_yaml.pyx", line 282, in yaml._yaml.CParser.__init__
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 344-349: surrogates not allowed
Почитал разные темы помогала смена locale на debian 10, но у меня ошибка все равно сохраняется
root@debian:~# localectl
System Locale: LANG=ru_RU.UTF8
LC_CTYPE=ru_RU.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
root@debian:~# locale
LANG=ru_RU.UTF8
LANGUAGE=
LC_CTYPE="ru_RU.UTF8"
LC_NUMERIC="ru_RU.UTF8"
LC_TIME="ru_RU.UTF8"
LC_COLLATE="ru_RU.UTF8"
LC_MONETARY="ru_RU.UTF8"
LC_MESSAGES="ru_RU.UTF8"
LC_PAPER="ru_RU.UTF8"
LC_NAME="ru_RU.UTF8"
LC_ADDRESS="ru_RU.UTF8"
LC_TELEPHONE="ru_RU.UTF8"
LC_MEASUREMENT="ru_RU.UTF8"
LC_IDENTIFICATION="ru_RU.UTF8"
LC_ALL=
Источник: Stack Overflow на русском