Spec-Zone.ru › Ansible 2.4

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

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

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

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

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

Запуск плейбука с 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.4/playbooks_vault.html

Spec-Zone.ru

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