因此,我一直在寻找一种方法来获取Packer构建来下载ec2 ami构建的私有存储库,该构建器将用于在自动启动配置下启动新实例。因此,拥有新创建的ec2实例,获取一个私人仓库。
获取私有仓库最安全的方法似乎是使用部署密钥,但我相信我必须手动将每个部署密钥添加到每个实例的仓库...这会破坏自动化目的,除非我和做错了。
基本上,我想知道如何通过打包程序克隆私有存储库,无论是通过shell脚本还是其他方式。我知道我可以使用Chef,但是当我尝试做的唯一事情是克隆github存储库时,我不认为我应该安装另一个依赖项。
我是否必须编写使用https github clone url的send / expect类型的脚本?
任何和所有帮助表示赞赏。
答案 0 :(得分:2)
使用ssh-agent有一个“解决方法”。我说解决方法因为它不是特别优雅。拥有Puppet模块的这一部分(可能还有一部分)会更好。
您的想法是,您需要为每个私有Github存储库生成一对公钥/私钥。然后在Github项目设置(设置/部署密钥)中将公钥添加为部署密钥。存储密钥对的位置取决于您。
现在在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'
这种方法的优点是您可以轻松地克隆多个私有存储库。
通过使用file provisioner,Chef或Puppet,有几种方法可以在EC2框上传密钥对。
答案 1 :(得分: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` }}"
]},