Поиск по сайту:

Как использовать Ansible Vault в Playbooks для защиты конфиденциальных данных. Часть 10


При использовании Ansible вам может потребоваться ввести некоторую конфиденциальную или секретную информацию в сборники сценариев. Сюда входят частные и открытые ключи SSH, пароли и сертификаты SSL, и это лишь некоторые из них. Как мы уже знаем, сохранять эту конфиденциальную информацию в виде обычного текста — плохая практика по понятным причинам. Эту информацию необходимо хранить под замком, потому что мы можем только представить, что произойдет, если хакеры или неавторизованные пользователи овладеют ею.

К счастью, Ansible предоставляет нам удобную функцию, известную как Ansible Vault. Как следует из названия, Ansible Vault помогает защитить важную секретную информацию, как мы обсуждали ранее. Ansible Vault может шифровать переменные или даже целые файлы и сборники сценариев YAML, как мы продемонстрируем позже. Это очень удобный и удобный инструмент, который требует одного и того же пароля при шифровании и расшифровке файлов.

Давайте теперь углубимся и рассмотрим различные операции, которые можно выполнить с помощью Ansible vault.

Как создать зашифрованный файл в Ansible

Если вы хотите создать зашифрованный файл Playbook, просто используйте команду ansible-vault create и укажите имя файла, как показано.

ansible-vault create filename

Например, чтобы создать зашифрованный файл mysecrets.yml, выполните команду.

ansible-vault create mysecrets.yml

После этого вам будет предложено ввести пароль, и после его подтверждения откроется новое окно с использованием редактора vi, где вы сможете начать писать свои пьесы.

Ниже приведен образец некоторой информации. Как только вы закончите, просто сохраните и выйдите из плейбука. И это все, что касается создания зашифрованного файла.

Чтобы проверить шифрование файла, используйте команду cat, как показано.

cat mysecrets.yml

Как просмотреть зашифрованный файл в Ansible

Если вы хотите просмотреть зашифрованный файл, просто введите команду ansible-vault view, как показано ниже.

ansible-vault view mysecrets.yml

Еще раз вам будет предложено ввести пароль. Вы снова получите доступ к своей информации.

Как редактировать зашифрованный файл в Ansible

Чтобы внести изменения в зашифрованный файл, используйте команду ansible-vault edit, как показано.

ansible-vault edit mysecrets.yml

Как всегда, укажите пароль и после этого приступайте к редактированию файла.

После завершения редактирования сохраните и выйдите из редактора vim.

Как изменить пароль Ansible Vault

Если вы чувствуете необходимость изменить пароль хранилища Ansible, вы можете легко сделать это с помощью команды ansible-vault rekey, как показано ниже.

ansible-vault rekey mysecrets.yml

При этом вам будет предложено ввести пароль хранилища, а затем будет предложено ввести новый пароль и позднее подтвердить его.

Как зашифровать незашифрованный файл в Ansible

Предположим, вы хотите зашифровать незашифрованный файл. Вы можете сделать это, выполнив команду ansible-vault encrypt, как показано.

ansible-vault encrypt classified.txt

Позже вы сможете просмотреть файл с помощью команды cat, как указано ниже.

Как расшифровать зашифрованный файл

Чтобы просмотреть содержимое зашифрованного файла, просто расшифруйте его с помощью ansible-vault encrypt, как показано в примере ниже.

ansible-vault decrypt classified.txt

Как зашифровать определенные переменные в Ansible

Кроме того, хранилище Ansible предоставляет вам возможность шифровать определенные переменные. Это делается с помощью команды ansible-vault encrypt_string, как показано.

ansible-vault encrypt_string 

Ansible vault запросит пароль, а затем потребует его подтверждения. Затем введите строковое значение, которое вы хотите зашифровать. Наконец, нажмите ctrl+d. После этого вы можете начать присваивать зашифрованное значение в книге воспроизведения.

Этого можно добиться в одну строку, как показано ниже.

ansible-vault encrypt_string 'string' --name 'variable_name'

Как расшифровать файл Playbook во время выполнения

Если у вас есть файл playbook и вы хотите расшифровать его во время выполнения, используйте параметр --ask-vault-pass, как показано на рисунке.

ansible-playbook deploy.yml --ask-vault-pass

Это расшифровывает все файлы, используемые в плейбуке, при условии, что они были зашифрованы с использованием одного и того же пароля.

Запрос пароля иногда может раздражать. Эти подсказки делают автоматизацию невозможной, особенно когда автоматизация является ключевым моментом. Чтобы упростить процесс расшифровки плейбуков во время выполнения, рекомендуется иметь отдельный файл паролей, содержащий пароль хранилища Ansible. Затем этот файл можно передать во время выполнения, как показано.

ansible-playbook deploy.yml --vault-password-file  /home/tecmint/vault_pass.txt

Это подводит нас к завершению этой темы и серии статей об автоматизации Ansible. Мы надеемся, что учебные пособия дали некоторые полезные знания о том, как можно автоматизировать задачи на нескольких серверах из одной центральной системы.