在编写部署脚本时,我想设置一个我想保密的git checkout URL。我想创建一个Travis作业来测试我的剧本。我现在想到的最简单的方法是,将global_vars设置为查找env变量,例如DEPLOYMENT_GIT_URL
。然后,我在构建docker镜像以针对我的剧本进行测试时,用travis
加密此env变量,并将其传递给docker exec
。
题:
docker exec
将加密的Travis变量传递给实例吗?像sudo docker exec ... export DEPLOYMENT_GIT_URL=$TRAVIS_ENV ansible-playbook -i ....
谢谢
最佳答案
您可以pass variables directly to Ansible。如果要嵌套或复杂变量,请使用JSON字符串。
docker exec <container> ansible-playbook -e GITURL="$GITURL" whatever.yml
正如gogstad所述,Ansible具有通过
ansible-vault
管理 secret 的功能。除非此URL是Travis需要作为来源的信息,否则将其直接存储在Ansible中可能会更容易。否则openssl
可以管理 secret :secret=$(echo -n "yourdata" | openssl enc -e -aes-256-cbc -a -k 'passpasspass')
echo $secret | openssl enc -d -aes-256-cbc -a -k 'passpasspass'
如果您确实想使用环境变量传递数据,则需要在容器创建时使用
docker run
和 -e
进行操作docker run -e GITURL="what" busybox sh -c 'echo $GITURL'
关于deployment - 如何在docker中设置加密的Travis env变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37472962/