Одна из моих ролей имеет два разных типа переменных. Один из них является общедоступным (например, версии пакетов и другая полезная информация). Они могут быть переданы SCM без беспокойства. Он также требует некоторую конфиденциальную информацию (например, ключи API и другую секретную информацию). Я использую ansible-vault
для шифрования секретной информации. Мое решение состояло в том, чтобы иметь vars/main.yaml
для pulic, и vars/vault.yml
для зашифрованной личной информации.Используйте несколько файлов var в незаменимой роли
Я столкнулся с проблемой и не уверен, что это лучшая практика или фактическое решение здесь. Кажется, что ansible загружает только файл vars/main.yml
. Естественно, я не хочу шифровать публичную информацию, поэтому я искал решение. До сих пор единственным решением, которое я придумал (предложил IRC), является создание group_vars/all/vault.yml
и префикс всех переменных с именем роли. Это работает, потому что ansible, кажется, рекурсивно загружает все под group_vars
. Это работает, но кажется организационно неправильным, потому что переменные предназначены для конкретных роли, а не «глобально повсеместно истинно». Я также попытался поместить include: vars/vault.yml
в vars/main.yml
, но это не сработало.
Есть ли способ для этого?
Согласны ли вы с el_whictels ниже, о таких вещах не следует включать в эту роль? – ahawkins
Не обязательно, это зависит от цели вашей роли. Если вы просто используете его для структурирования правил, я думаю, что все в порядке. Скорее всего, этот ключ API не изменится, и другие люди (как вне вашего проекта или компании) не будут использовать эту роль. Если бы это была общая роль для других, то, конечно, было бы нецелесообразно жестко программировать ключ API в роли. Но тогда также было бы бессмысленно иметь файл хранилища в роли, потому что любой, кто его запустил, все равно должен знать пароль, поэтому может его декодировать. – udondan
Тем не менее, можно утверждать, что роль не должна содержать никакой конфигурации реализации вообще. В основном я тоже на этом поезде. Но опять же, если ваша главная цель - дать вашим правилам Ansible структуру, это тоже хороший аргумент. – udondan