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

标签 deployment docker ansible travis-ci ansible-playbook

在编写部署脚本时,我想设置一个我想保密的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/

    相关文章:

    Ansible lineinfile insertafter 重复行

    c# - MSBuild 无法构建 MSI。 Windows 服务有替代方案吗?

    azure - 通过 ARM 模板将现有混合连接链接到 azure Web 应用程序

    linux - Chroot 与 Docker

    django - Kubernetes + Django/PostgreSQL - 当我将它部署到 Kubernetes 集群时如何指定我的 PostgreSQL 数据库的主机

    powershell - Ansible 可以监视 Azure 中的新目标计算机吗?

    ubuntu - 从用户 shell 执行命令的 Ansible 剧本

    ios - 将 React-Native App 部署到 App Store 的指南

    java - Maven 部署到 Google Cloud。 appengine 是否为 :deploy perform a full clean/build?

    numpy - 在 Dockerfile 中安装 Numpy Requirement。结果出错