Мы используем Ansible Vault для хранения паролей, личных ключей для сертификатов и т. Д. В нашем git-репозитории Ansible Playbook. Все наши существующие личные данные находятся в текстовой форме, поэтому мы можем хранить их в переменных. Затем они используются в шаблонах или с content
параметром модуля копирования.
Теперь у нас есть файл Java KeyStore, который, к сожалению, имеет двоичный формат. Как таковой, он не может храниться внутри переменной - или, по крайней мере, я не знаю, как это сделать. Какой самый простой способ правильно зашифровать наш файл, пока он находится в git, но доступен при запуске ansible-playbook
?
Что я уже попробовал без успеха:
- Кодирование двоичного файла в base64, сохранение закодированных данных в переменной и использование модуля шаблона с
{{base64_data | b64decode}}
. Приводит к большому количествуEF BF BD
в шестнадцатеричном дампе полученного файла. Три байта кодируют символ замены Unicode в UTF-8, поэтому существует проблема с интерпретацией двоичных данных как текста. - Кодирование двоичного файла в base64, сохранение закодированных данных в переменной и использование модуля копирования с
content="{{base64_data | b64decode}}"
. Ansible жалуется на «переменная вставила новый параметр в аргументы модуля». При использовании одинарных кавычек вместо двойных кавычек, Ansible жалуется с «ошибкой разбора строки аргумента» и копией всех двоичных данных, сбрасываемых в терминал ...