(vnc сервер захешировал пароль). его кодируем в base64. потом в плейбуке по коду base64 восстанавливаем бинарь.
но почему-то восстанавливается не то, что должно.
вот пример. первый раз кодируем оригинальный файл, второй раз кодируем файл, который сгенерировал ансибл. как видим, хэши разные, т.е. исходный файл тоже разный. чек суммы если считать, тоже разные.
[root@monitoring-pc ~]# base64 /etc/x11vnc.pass
hcgeZyKT+IY=
[root@monitoring-pc ~]# base64 /etc/x11vnc.pass
77+977+9Hmci77+977+977+9
ansible-playbook --version
ansible-playbook 2.9.13
config file = /etc/ansible/ansible.cfg
configured module search path = [u'/home/support/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python2.7/dist-packages/ansible
executable location = /usr/bin/ansible-playbook
python version = 2.7.17 (default, Jul 20 2020, 15:37:01) [GCC 7.5.0]
всё делаю парой таких тасков.
- name: Render x11vnc password file. Part 1
set_fact:
string_in_base64: 'hcgeZyKT+IY='
tags: try
- name: Render x11vnc password file. Part 2
copy:
dest: "/etc/x11vnc.pass"
content: '{{ string_in_base64 | b64decode }}'
tags: try
я читал, что в python2 есть баг по этому поводу. поэтому на целевой машине применяю python3
[all:vars]
ansible_python_interpreter=/usr/bin/python3
похоже всё-таки от Python2 надо отказаться и на ведущей и на ведомой машине. https://stackoverflow.com/questions/58840430/how-to-decode-a-base64-var-to-a-binary-file-with-ansible-module
Обсуждают сегодня