8

这是我想要实现的工作流程:

  1. 提交代码
  2. bitbucket 管道在我的公共 docker 映像上运行测试
  3. bitbucket 管道执行 ansible 脚本以部署在我的公共 docker 映像上

前两个步骤工作正常,但问题是:我应该如何/在哪里存储我的私钥以允许 ansible 通过 ssh 代理 ssh 到我的远程服务器?

我有点不愿意将私钥存储在 Pipeline env 设置中,因为其他人都拥有对 repo 的管理员访问权限可以看到它。

这里有一个类似的问题,但答案建议在 docker 上设置密钥并使用私有 repo,这与我的有点不同。

4

2 回答 2

3

您现在可以在管道设置下设置 SSH 密钥,这样您就不需要使用环境变量并复制到容器中的某些位置。私钥根本不显示。

在下面

Settings -> Pipelines -> SSH keys

您需要获取生产容器 known_hosts 文件的公钥。

于 2017-03-09T19:45:00.977 回答
2

我已经设置了一个类似的过程并使用了 Pipelines 环境变量,有一个复选框可以保护该值,因此您无需担心其他人查看它。

设置非常简单:

  • Base64 对私钥进行编码并将其存储在 Bitbucket 的环境变量中
  • 将“my_known_hosts”文件提交到您的代码库,其中包含远程主机的公共 SSH 密钥。

然后在您的 bitbucket-pipelines.yml 文件中设置 known_hosts 和密钥:

- mkdir -p ~/.ssh
- cat my_known_hosts >> ~/.ssh/known_hosts
- (umask  077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)

此处提供完整文档https://confluence.atlassian.com/bitbucket/access-remote-hosts-via-ssh-847452940.html

于 2016-11-13T20:27:40.410 回答