如何在docker中设置加密的Travis env变量?

时间:2016-05-27 00:17:30

标签: deployment docker ansible travis-ci ansible-playbook

在编写我的部署脚本时,我想设置一个我想要保密的git checkout网址。我想创建一个Travis工作来测试我的剧本。我现在能想到的最简单的方法是设置我的global_vars来寻找一个env变量说DEPLOYMENT_GIT_URL。然后,我在travis中加密此env变量,并在构建docker镜像以测试我的playbook时将其传递给docker exec

问题:

  1. 我可以通过docker exec将加密的Travis变量传递给实例吗?像sudo docker exec ... export DEPLOYMENT_GIT_URL=$TRAVIS_ENV ansible-playbook -i ....
  2. 之类的东西
  3. 虽然这似乎是最简单的方法,但请欣赏有关此方法的评论。
  4. 由于

1 个答案:

答案 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'