在编写我的部署脚本时,我想设置一个我想要保密的git checkout网址。我想创建一个Travis工作来测试我的剧本。我现在能想到的最简单的方法是设置我的global_vars来寻找一个env变量说DEPLOYMENT_GIT_URL
。然后,我在travis
中加密此env变量,并在构建docker镜像以测试我的playbook时将其传递给docker exec
。
问题:
docker exec
将加密的Travis变量传递给实例吗?像sudo docker exec ... export DEPLOYMENT_GIT_URL=$TRAVIS_ENV ansible-playbook -i ....
由于
答案 0 :(得分:0)
你可以pass variables directly to Ansible。如果需要嵌套或复杂变量,请使用JSON字符串。
docker exec <container> ansible-playbook -e GITURL="$GITURL" whatever.yml
正如gogstad所提到的,Ansible有通过ansible-vault
管理机密的工具。除非此URL是Travis需要作为其来源的信息,否则可能更容易将其直接存储在Ansible中。否则openssl
可以管理秘密:
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'