【问题标题】:How to automate cloning private GitHub with Chef如何使用 Chef 自动克隆私有 GitHub
【发布时间】:2014-12-12 12:32:13
【问题描述】:
我每天都必须启动 新 EC2 实例(或任何其他具有公共 IP 的服务器)。我正在使用 Chef 进行配置、创建虚拟主机、上传数据库等。
我需要从 GitHub 克隆几个私有存储库。最好的方法是什么?
- 我可以手动生成一个 ssh 密钥,并为我需要的每个 GitHub 存储库添加它,然后运行脚本 - 但工作量很大。
- 我可以选择
git clone git://user:password@github.com/*****/*****.git,但显然我不想这样存储我的密码
- 还有什么?
有什么办法:
- 将私钥(或密码?)存储在食谱/食谱中或
- 生成新密钥,并通过 API 与 GitHub 同步(但这会导致我的 GitHub 帐户中有数百个密钥)
【问题讨论】:
标签:
github
ssh
amazon-ec2
chef-infra
【解决方案2】:
无耻的插头:deploy_key 食谱。
我根据这个精确的用例创建了这本食谱。它管理 GitHub、BitBucket 和 GitLab 中部署密钥的整个生命周期。它在本地创建一个密钥(因此它永远不必通过网络发送),将其作为 deploy_key 添加到存储库(只读,因此这些密钥永远不会将更改推送到存储库),并且可以用于删除密钥文件并从 repo 中删除密钥。
所有操作都是幂等的,所以如果您担心您的存储库会被过多的 deploy_keys 淹没,您可以在使用后从存储库中删除密钥(通过 Chef,:remove 操作),或者执行定期清理任务删除所有 deploy_keys。下次 Chef 运行时,它会注意到 key 不存在并重新添加它。
您需要保护的唯一秘密是存储库的凭据,可以像保护其他秘密一样保护它。