Что такое конфигурационный эквивалент Ansible для `--vault-password-file`?

12

С помощью ansible-playbook можно --user=REMOTE_USERопределить пользователя ssh, но также можно ansible_ssh_user: REMOTE_USERуказать либо в host-, либо в group_vars.

Вопрос

Какую переменную нужно определить в каталоге group- или host_vars, чтобы предотвратить --vault-password-fileее определение во время работы ansible-playbook?

попытки

  • Когда ansible_vault_password_file: ~/.vault_pass.txtопределено в конфигурации, дешифрование завершается неудачно:

    ERROR! Decryption failed on /path/to/vault
    
  • Никаких связанных переменных хранилища в этой документации не найдено

030
источник
Кстати, теперь это задокументировано (начиная с версии 1.7) здесь: docs.ansible.com/ansible/…
Tensibai

Ответы:

13

Вот определение:

DEFAULT_VAULT_PASSWORD_FILE = get_config(p, DEFAULTS, 'vault_password_file', \
'ANSIBLE_VAULT_PASSWORD_FILE', None, value_type='path')

Это означает, что вы либо положили в ansible.cfg или playbook:

vault_password_file: ~/.vault_pass.txt

Или в вашей оболочке определяется эта переменная:

export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
Иржи Клауда
источник
Я намеренно оставил там текст URL-адреса, чтобы показать людям, как просмотр кода может помочь там, где не хватает документации и где код можно легко найти. Но я думаю, что гиперссылка должна быть достаточно.
Иржи Клауда
Если что-то еще не получается, прочитайте документацию ... и, если нет документации, прочитайте источник ... если у вас есть доступ к нему ... и если у вас есть, убедитесь, что вы ищете правильную версию .. Осталось только уметь понять все это. PS: ссылки могут перестать работать когда-нибудь ...
Pierre.Vriens
@JiriKlouda это, кажется, не работает, хотя это было определено в group_vars/all/vars. export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtдолжен был быть запущен.
030
Это переменная конфигурации. Это должно быть в ansible.cfg или эквивалентном или в playbook.
Иржи Клауда
Также я специально проверил версию 2.2, которую вы запускаете, и она там: github.com/ansible/ansible/blob/stable-2.2/lib/ansible/…
Иржи Клуда,
2

Вы можете установить переменную среды, ANSIBLE_VAULT_PASSWORD_FILEхранящую путь к файлу пароля хранилища. Таким образом, вы не будете всегда использовать --vault-password-fileпереключатель при запуске playbook.

Это описано в документации по хранилищу Ansible, доступной здесь .

Итак, добавьте export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txtк своему ~/.bash_profileисточнику, и вы готовы к работе.

Если вам нужны разные пароли хранилища для разных групп хостов, то вы должны сделать следующее:

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

Это пример передового подхода к управлению конфиденциальной информацией для каждой группы. Более подробная информация доступна в документации Ansible здесь (приведенный выше текст скопирован оттуда).

13dimitar
источник
1
Это не позволит использовать разные пароли для хостов
Tensibai
Вы имеете в виду пароль подключения? Потому что, если вы это сделаете, что общего у Ansible Vault?
13dimitar
Я имел в виду пароль хранилища, и желание иметь разные пароли хранилища для разных групп имеет смысл (и, насколько я понимаю, это корень вопроса).
Тенсибай
Я так не поняла. Я отредактировал свой ответ, чтобы включить этот сценарий.
13dimitar
кажется лучше. Кстати, понижение не мое
Tensibai