Как использовать 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. Мы надеемся, что учебные пособия дали некоторые полезные знания о том, как можно автоматизировать задачи на нескольких серверах из одной центральной системы.