Ansible Vault — это функция, которая позволяет пользователям шифровать значения и структуры данных в проектах Ansible. Это обеспечивает возможность защиты любых конфиденциальных данных, необходимых для успешного запуска Ansible и конфигурации системы. Однаком хранимые или вызываемые данные не должны быть общедоступной, например, если в них содержаться пароли и/или закрытые ключи. Ansible автоматически расшифровывает содержимое зашифрованного хранилища во время выполнения.
Vault — это механизм, позволяющий прозрачно вводить зашифрованный контент в роли Ansible. Утилита под названием ansible-vault защищает конфиденциальные данные, зашифровывая их на диске.
Vault использует алгоритм AES256 для обеспечения симметричного шифрования с использованием пользовательского пароля. Это означает, что один и тот же пароль используется для шифрования и расшифровки контента, что полезно с точки зрения удобства использования. Ansible способен идентифицировать и дешифровать любые файлы, хранящиеся в хранилищах, которые он находит при выполнении playbook или задачи (tasks).
Создание нового зашифрованного файла
1 |
ansible-vault create main.yml |
Будет предложено ввести пароль:
1 2 |
New Vault password: Confirm New Vault password: |
После этого в открывшемся редакторе вы сможете ввести данные, введем текст
1 |
some text |
Сохраним файл и теперь выведем его, посмотрим что получилось:
1 2 3 4 5 6 7 8 |
cat main.yml $ANSIBLE_VAULT;1.1;AES256 65316332393532313030636134643235316439336133363531303838376235376635373430336333 3963353630373161356638376361646338353763363434360a363138376163666265336433633664 30336233323664306434626363643731626536643833336638356661396364313666366231616261 3764656365313263620a383666383233626665376364323062393462373266663066366536306163 31643731343666353761633563633634326139396230313734333034653238303166 |
Файл зашифрован.
Шифрование существующего файла
Если необходимо зашифровать уже существующий файл с неким контентом.
Смоделируем данную ситуацию, предварительно создав файл:
1 |
echo 'some text' > main.yml |
Выполним шифрование, в процессе нам будет предложено ввести пароль и после подтверждения ответ об успешном завершение процесса шифрования:
1 2 3 4 5 |
ansible-vault encrypt main.yml New Vault password: Confirm New Vault password: Encryption successful |
Просмотр и редакрирование содержимого зашифрованного файла
Для просмотра содержимого зашифрованного файла, выполним команду и введем пароль:
1 2 3 4 |
ansible-vault view main.yml Vault password: Some text from encrypted file |
Аналогичным образом выполняеться и редактирование зашифрованного файла:
1 |
ansible-vault edit main.yml |
Ручная расшифровка файла
1 |
ansible-vault decrypt main.yml |
Изменение пароля
Можно изменить пароль к зашифрованному файлу:
1 2 3 4 5 6 7 |
ansible-vault rekey main.yml Vault password: New Vault password: Confirm New Vault password: Rekey successful |
Вам будет предложено ввести старый пароль, затем новый.
Автоматическая расшифровка при выполнение playbook или tasks
Создадим файл с нашим паролем
1 |
echo 'my_password' > .vault_pass |
Обязательно добавим файл в .gitignore
1 |
echo '.vault_pass' >> .gitignore |
в файле конфигурации добавим:
1 2 3 4 5 |
nano ansible.cfg [defaults] . . . vault_password_file = ./.vault_pass |
оригинал тут https://www.digitalocean.com/community/tutorials/how-to-use-vault-to-protect-sensitive-ansible-data-on-ubuntu-16-04