bash - Packer - 用于克隆私有(private)存储库的 Shell 脚本配置程序 - 自动启动 EC2 实例

标签 bash shell github amazon-ec2 packer

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

获取私有(private)存储库的最安全方法似乎是使用部署 key ,但我相信我必须手动将每个部署 key 添加到每个实例的存储库中......这会破坏自动化目的,除非我做错事了。

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

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

感谢任何和所有帮助。

最佳答案

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

这个想法是,您需要为每个私有(private) Github 存储库生成一对公钥/私钥。然后,将公钥添加为 Github 项目设置(设置/部署 key )中的部署 key 。 key 对的存储位置取决于您。

现在在 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 <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="80e7e9f4c0e7e9f4e8f5e2aee3efed" rel="noreferrer noopener nofollow">[email protected]</a>:[account]/project.git'

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

有几种方法可以在 EC2 盒子上上传 key 对,可以使用 file provisioner 、厨师或木偶。

关于bash - Packer - 用于克隆私有(private)存储库的 Shell 脚本配置程序 - 自动启动 EC2 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26345238/

相关文章:

linux - 尝试在 shell 中删除文件时发生错误(语法错误 : bad fd number)

git - 在 github 推送上将静态站点部署到 s3 的最佳策略?

github - 为什么我自己的 GitHub 页面不显示我的项目?

linux - 在 bash 中转义空格

shell - 以树格式递归列出所有目录

c - 在计算发送到 C 文件后使用 AWK 打印列

git - 如何跳过推送事件的 GitHub Actions 作业?

bash - Bash 中的百分比符号,它有什么用?

bash - 如何基于某些字符串提取一行和之前的一行

linux - 在编写我的第一个 bash 脚本时遇到问题