Вступление
В частных репозиториях CI и Source Control, таких как Gitlab-ce, можно скопировать ~ / .vault_pass.txt на сервер и позволить CI использовать его для дешифрования файлов с использованием Ansible.
проблема
В общедоступных CI и репозиториях контроля версий, таких как Bitbucket, невозможно скопировать ~ / .vault_pass.txt на сам CI-сервер.
обсуждение
В Bitbucket можно определить зашифрованные переменные, но при проверке этого файла единственными переменными, связанными с VAULT, являются:
ANSIBLE_ASK_VAULT_PASS
ANSIBLE_VAULT_PASSWORD_FILE
Эти переменные не являются опцией для решения проблемы, так как когда они ANSIBLE_ASK_VAULT_PASS
установлены, по- ansible-vault
прежнему запрашиваются:
user@host $
Vault password:
Когда тот же пароль введен, он может открыть зашифрованный файл, но цель состоит в том, чтобы открыть файл без необходимости файла или ввода пароля в командной строке.
Другая попытка решить проблему была запущена export ANSIBLE_ASK_VAULT_PASS=<ansible-vault-password>
, но интерактивный режим сохраняется.
Другой вариант export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass.txt
, но тогда этот файл нужно отправить в репозиторий, но репозитории исходного контроля не должны содержать пароли.
Ответы:
--vault-password-file
вместо этого можно указать на исполняемый скрипт, который пишет в стандартный вывод. Эта малоизвестная особенность должна решить вашу проблему.Сначала напишите простой исполняемый скрипт, который печатает системную переменную окружения, и проверьте это в своем контроле исходного кода. Затем используйте функцию зашифрованных переменных Bitbucket, чтобы установить для этой переменной среды свой секрет ansible-vault. Наконец, выполните так:
ansible-playbook site.yml --vault-password-file ./mypass.sh
,Использованная литература:
http://docs.ansible.com/ansible/playbooks_vault.html#running-a-playbook-with-vault
https://groups.google.com/forum/#!topic/ansible-devel/1vFc3y6Ogto
источник
echo $VAR
например, и эта переменная будет установлена в интерфейсе BitBucket?([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
С помощью
привело к:
На основании этого поста в bitbucket-конвейерах было определено следующее:
источник
Вы можете создать тестовый набор, который не запускает производство, и загрузить для него разные файлы.
Создайте host_vars / localhost / vault, который работает только для локальной тестовой установки.
Таким образом, вы можете использовать пароль открытого хранилища, который работает только для этого локального хранилища хоста.
источник