Spec-Zone.ru › Ansible 2.7

Использование Vault в плейбуках

  • Запуск плейбука с Vault
  • Одно зашифрованное переменное
  • Использование encrypt_string

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

Для активации этой функции используется командная утилита ansible-vault для редактирования файлов, а командная опция --ask-vault-pass или --vault-password-file используется для работы. Вы также можете изменить файл ansible.cfg для указания местоположения файла пароля или настроить Ansible на постоянное запрос пароля. Эти параметры не требуют использования командной опции.

Для получения рекомендаций по лучшим практикам обратитесь к Переменные и Vault.

Запуск плейбука с Vault

Для запуска плейбука, содержащего файлы с зашифрованными данными vault, необходимо указать одну из двух опций. Для интерактивного указания пароля vault:

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

Этот запрос затем будет использован для дешифрования (только в памяти) любых файлов vault, к которым осуществляется доступ. В настоящее время это требует, чтобы все файлы были зашифрованы одним и тем же паролем.

В качестве альтернативы, пароли могут быть указаны с помощью файла или скрипта (версия скрипта потребует Ansible 1.7 или более поздней версии). При использовании этой опции убедитесь, что права доступа к файлу таковы, что никто другой не может получить доступ к вашему ключу, и не добавляйте свой ключ в систему управления версиями:

ansible-playbook site.yml --vault-password-file ~/.vault_pass.txt

ansible-playbook site.yml --vault-password-file ~/.vault_pass.py

Пароль должен быть строкой, хранящейся в файле в одной строке.

Примечание

Вы также можете установить переменную окружения ANSIBLE_VAULT_PASSWORD_FILE, например ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt, и Ansible автоматически будет искать пароль в этом файле.

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

Это может быть полезно при использовании Ansible из системы непрерывной интеграции, такой как Jenkins.

Опция --vault-password-file также может быть использована с командой ansible-pull, если нужно, хотя это потребовало бы распространения ключей на ваши узлы, поэтому учтите последствия — vault предназначен в большей степени для режима «push».

Одно зашифрованное переменное

Начиная с версии 2.3, Ansible теперь может использовать зашифрованную переменную, которая хранится в файле YAML в «открытом» формате:

notsecret: myvalue
mysecret: !vault |
          $ANSIBLE_VAULT;1.1;AES256
          66386439653236336462626566653063336164663966303231363934653561363964363833313662
          6431626536303530376336343832656537303632313433360a626438346336353331386135323734
          62656361653630373231613662633962316233633936396165386439616533353965373339616234
          3430613539666330390a313736323265656432366236633330313963326365653937323833366536
          34623731376664623134383463316265643436343438623266623965636363326136
other_plain_text: othervalue

Для создания зашифрованной переменной используйте команду ansible-vault encrypt_string. Подробности см. в разделе Использование encrypt_string.

Эта зашифрованная переменная будет расшифрована с использованием предоставленного секрета vault и использована как обычная переменная. Командная строка ansible-vault поддерживает stdin и stdout для шифрования данных на лету, что можно использовать из вашего любимого редактора для создания этих зашифрованных переменных; вы просто должны убедиться, что добавили тег !vault, чтобы Ansible и YAML понимали необходимость дешифровки. Также необходимо |, так как шифрование vault приводит к многострочной строке.

Использование encrypt_string

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

См. Использование encrypt_string для создания зашифрованных переменных для встраивания в yaml.

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_vault.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API