2

我环顾四周,试图找出一种方法让 Packer 构建下载一个私有存储库,用于 ec2 ami 构建,该构建将用于在自动启动配置下启动新实例,让新创建的 ec2 实例获取私人回购。

似乎获取私有存储库最安全的方法是使用部署密钥,但我相信我必须手动将每个部署密钥添加到每个实例的存储库中……这违背了自动化目的,除非我做错了什么.

我想知道如何通过打包程序克隆私有存储库,无论是通过 shell 脚本还是其他方式。我知道我可以使用 Chef,但是当我唯一想做的事情是克隆 github 存储库时,我认为我不应该安装另一个依赖项。

我是否必须编写使用 https github 克隆 url 的发送/预期类型的​​脚本?

任何和所有的帮助表示赞赏。

4

2 回答 2

2

有一个使用 ssh-agent 的“解决方法”。我说解决方法是因为它不是特别优雅。拥有 Puppet 模块的这一部分会更好(也许已经有一个)。

这个想法是您需要为每个私有 Github 存储库生成一对公钥/私钥。然后在 Github 项目设置(Settings/Deploy Keys)中添加公钥作为 Deploy 密钥。存储密钥对的位置取决于您。

现在在 Packer 中,您可以使用 Shell 配置器并执行以下操作:

#!/usr/bin/env bash

ssh-keyscan github.com >> /home/ec2-user/.ssh/known_hosts
eval `ssh-agent`
ssh-agent bash -c \
'ssh-add /home/ec2-user/.ssh/[privateKey]; git clone git@github.com:[account]/project.git'

这种方法的优点是您可以轻松克隆多个私有存储库。

有几种方法可以将您的密钥对上传到 EC2 机器上,可以使用文件配置器、Chef 或 Puppet。

于 2014-11-25T16:51:33.993 回答
0

我一直在 Windows 上使用它,但理论上应该与此类似

{
"type": "powershell",
"inline": [ 
 "Set-Location C:\\{{ user `LAB_ENVIRONMENT` }}; git clone https://{{ user `GITLAB_USERNAME` }}:{{ user `GITLAB_ACCESS_TOKEN` }}@gitlab.com/{{ user `REPOSITORY` }}"
]},

于 2021-02-24T14:44:57.007 回答