linux - 将 Git SSH key 捆绑到私有(private) AMI 中

标签 linux git amazon-web-services amazon-ec2 amazon-ami

我有一个 EC2 实例,它运行一个托管在私有(private) git 存储库上的应用程序。

我需要能够从我的主服务器启动其中的许多。目前,我有 5 个固定的“worker”实例,我可以毫无问题地从 master 启动/停止它们。每个工作人员启动、 pull 存储库并在启动时启动应用程序。这显然不是一个好的解决方案,我想让它更灵活(启动尽可能多的实例,等等)。配置和包是最终的,所以我很乐意将它们全部捆绑到一个 AMI 中。

有没有办法将我的 git key 捆绑到 AMI 中,以便启动许多类似的实例并让它们在启动时全部 pull 并启动我的应用程序,而无需连接到每个实例并输入密码?有没有更好的办法?我读过有关 cloud-init、user-data、puppet 和许多其他内容的信息,但我在这方面还很新手,找不到使用 ssh key 的合适示例。

最佳答案

我建议您不要将 key 捆绑到 AMI 中,而是将它们与 AMI 分开,因为:

  1. 如果您更改了 git key ,则不必构建新的 AMI
  2. 有权从您的 AMI 启动实例的未授权用户无法启动您的应用

我建议使用用户数据功能。如果需要,您可以选择加密您的 key 并对其进行 base64 编码。当您手动或使用 CLI/API 启动您的实例时,您可以传递您的 key ,实例启动后可以访问这些 key 。访问数据的方式有很多种(python、curl 等等)。我建议您使用 AWS 元数据服务器,因为您的实例不需要您的 AWS 凭证来获取用户数据。实例启动后,让您的应用进行以下调用,获取 key ,然后 pull 存储库:

curl http://169.254.169.254/latest/user-data

返回您的元数据(无需凭据)。您可以选择使用 base64 解码和解密您的 key ,并使用它来提取 repo 协议(protocol)。如果您不想要额外的安全性,您可以绕过加密/base64 部分。

关于linux - 将 Git SSH key 捆绑到私有(private) AMI 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27261527/

相关文章:

ios - AWS Cognito - 如何更新经过开发人员身份验证的用户 token ?

linux - 获取符号链接(symbolic link)完整路径

c++ - ARM Embedded Linux (AM335x),断电后文本文件内容被删除

git - 如何在 Mercurial 中打印给定分支上的变更集哈希列表?

git - git filter-branch 和签名提交的意外行为

linux - 如何选择 Amazon Machine Image(linux 发行版)到 AWS EC2?

linux - 什么时候使用 .fini_array 部分?

linux - OpenGL glutSwapBuffers 不绘制场景

git - 默认的 Visual Studio 2013 .gitignore 位于何处?

amazon-web-services - 如何通过CloudFormation模板将lambda放入VPC中