Linux 将Git SSH密钥捆绑到私有AMI中
我有一个EC2实例,它运行一个托管在私有git repo上的应用程序 我需要能够从我的主服务器启动其中许多。目前,我有5个固定的“worker”实例,我可以从主服务器启动/停止,没有问题。每个工作人员启动、提取回购协议,并在启动时启动应用程序。这显然不是一个好的解决方案,我想让它更灵活(根据需要启动尽可能多的实例,等等)。配置和包是最终的,所以我觉得把它们捆绑到AMI中很好Linux 将Git SSH密钥捆绑到私有AMI中,linux,git,amazon-web-services,amazon-ec2,amazon-ami,Linux,Git,Amazon Web Services,Amazon Ec2,Amazon Ami,我有一个EC2实例,它运行一个托管在私有git repo上的应用程序 我需要能够从我的主服务器启动其中许多。目前,我有5个固定的“worker”实例,我可以从主服务器启动/停止,没有问题。每个工作人员启动、提取回购协议,并在启动时启动应用程序。这显然不是一个好的解决方案,我想让它更灵活(根据需要启动尽可能多的实例,等等)。配置和包是最终的,所以我觉得把它们捆绑到AMI中很好 有没有一种方法可以让我将git密钥捆绑到AMI中,以便启动许多类似的实例,并让它们在启动时都拉入并启动我的应用程序,而无需
有没有一种方法可以让我将git密钥捆绑到AMI中,以便启动许多类似的实例,并让它们在启动时都拉入并启动我的应用程序,而无需连接到每个实例并输入密码?有更好的办法吗?我已经读过关于cloud init、用户数据、puppet和许多其他内容,但我对这方面非常熟悉,无法找到使用ssh密钥的适当示例。我建议您将密钥与AMI分开,而不是捆绑到AMI中,因为:
curl http://169.254.169.254/latest/user-data
返回元数据(不需要凭据)。您可以选择性地对密钥进行解码和解密,并使用它来提取repo。如果您不需要额外的安全性,可以绕过encrypt/base64部分。谢谢您的回答!总之,我需要:创建一个用户数据脚本,粘贴我的私钥、公钥和已知主机(这样我就不必接受指纹),运行ssh代理,然后克隆repo?那么我只需要在启动时卷曲它?对不起,我有点困惑是的。制作一个自包含脚本,将密钥、已知主机复制到正确的位置,并克隆repo。启动instance时,在将内容复制到用户数据字段之前,请验证本地计算机上的脚本。AWS希望用户数据采用base64编码格式。如果您使用的是AWS仪表板,那么有一个选项可以让AWS将其编码为base64。如果您使用的是API/CLI,请从文档中查找API/CLI是否希望您对数据进行编码。如果在启动实例之后,如果没有看到所需的结果:
cd/var/lib/cloud/instance/scripts
。你应该在那里看到你的脚本。尝试运行脚本、调试、修复脚本,并在启动实例时将其用作用户数据。我已经做过很多次了,如果你没有看到想要的结果,请随时问我问题。可能还值得一提的是,日志可以在/var/log/cloud init output.log中找到。log
非常感谢你的帮助!