Мы используем 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 жалуется с «ошибкой разбора строки аргумента» и копией всех двоичных данных, сбрасываемых в терминал ...
Ответы:
Для этого вы можете использовать команду оболочки с переменной base64.
Эрик
источник
То, как мы делаем это для нашей ANSIBLE установки:
-Мы шифруем отдельные конфиденциальные материалы (небольшое подмножество нашего репозитория), используя https://www.agwa.name/projects/git-crypt/ -Мы все всегда фиксируем, используя теги git sign -Мы периодически проверяем, есть ли какие-либо неподписанные файлы
Преимущество git-crypt заключается в том, что, поскольку он использует фильтры git, шифрование прозрачно. Кроме того, вы можете предоставить разработчикам доступ к хранилищу без ущерба для зашифрованного содержимого (оно будет игнорировать зашифрованные файлы, если ключ дешифрования не может быть получен).
источник