我正在运行几个 ubuntu ec2 实例,我想运行一个自动化脚本,只要从 AMI 启动一个新实例,它就会从 Github 中提取代码。事情是目前我正在ssh
连接服务器并运行命令git pull origin master
,它会要求输入密码密钥。
我如何自动化这个过程?因此,从 AMI 启动新实例后,该脚本应该:
- 跑
- 拉取代码和子模块
- 创建几个文件并配置它
请帮助我实现它。
谢谢
我正在运行几个 ubuntu ec2 实例,我想运行一个自动化脚本,只要从 AMI 启动一个新实例,它就会从 Github 中提取代码。事情是目前我正在ssh
连接服务器并运行命令git pull origin master
,它会要求输入密码密钥。
我如何自动化这个过程?因此,从 AMI 启动新实例后,该脚本应该:
请帮助我实现它。
谢谢
这可能需要一些时间和配置,但这可能会让您走上正确的道路。
首先,设置您的 ssh 密钥,以便您可以自动从 repo 中提取,而无需密码。此处概述:https ://help.github.com/articles/generating-ssh-keys
接下来,创建一个启动脚本以从 Github 发出“pull”命令。在这里:https ://help.ubuntu.com/community/UbuntuBootupHowto
然后保存您的 AMI,当您启动一个新的 EC2 AMI 时,脚本应该运行,拉入您的 Github 更改。
还要注意,确保 gits 远程路径使用 SSH,如果是 HTTPS,它总是会要求输入密码。
最好的办法是利用 Ubuntu 在其规范映像中利用 CloudInit 的事实。
使用 CloudInit,您可以传递脚本(即 shell 脚本)以在各个启动阶段作为 EC2 用户数据执行。
你可以很容易地让你的 GIT 命令行序列从这样的脚本中执行。他是文档的链接,其中包括示例。
创建对您的 ubuntu 实例的用户密码访问。如果您需要多个,请复制此特定实例。现在您不再需要密钥访问了。如果您需要在该实例中自动化一个进程,请 cron 它或通过 ssh 将脚本发送到该实例并让 cron 找到并运行它。