设置:
我有一个附加了Auto Scaling组的AWS Load Balancer。它启动了我已配置为充当应用程序服务器基本设置的AMI实例。
我使用User Data
设置执行以下操作:
#!/bin/bash
cd /home/server
GIT_SSH_COMMAND='ssh -i /home/ec2-user/app-server.key' git pull
composer install
也就是说:当Auto Scaling Group旋转一个新实例时,它会从GitHub中提取最新代码,更新作曲家依赖项(它是一个基于Lumen的PHP RESTful应用程序服务),并准备好了。< / p>
这一切都有效。
当我从Auto Scaling Group手动detatch
所有EC2实例时,会立即创建新实例并成功获取最新代码。可爱!
我正在尝试做什么
在我将服务器代码提交给GitHub之后,我想运行一个本地命令 - 比如deploy staging
,它会自动执行以下操作:
我现在在做什么
它仍然非常手动。我承诺使用GitHub,然后我必须转到AWS Web控制台并“分离”我的所有EC2实例,以便新的实例取代它们 - 然后我必须终止那些已分离的实例。
问题
所以 - 鉴于我想要完成的任务,我该如何完成?
在我的Windows PC中,我想输入一个单词来完成以上所有操作。
也许我对事物的排序是不正确的 - 例如,新的实例应该在终止旧的之前旋转等等 - 在这种情况下,请告诉我最好的方法的东西。
我也在寻找确切的建议:如何实现这一点。我是否需要下载适用于Windows的AWS CLI工具?如何从家用PC执行AWS命令?等。
谢谢!
修改
或者(也许这是一种更干净的方式?),我也可以告诉我的Auto Scaling组/负载均衡器中的当前实例“执行GitHub更新”..但我不知道如何做到这一点。实例仅在首次创建时执行此操作。
答案 0 :(得分:2)
这整个设置有点脆弱。您可以查看CodeDeploy:https://aws.amazon.com/codedeploy/
对于您的具体设置,如果您不允许触摸/更改太多,我会做的是:
在运行的实例中,我会定期从github中提取并与正在运行的内容进行比较。如果有新版本,我会停止服务。该实例将变得不健康并被回收并获得新版本
您可能希望在不同的计算机之间设置一个稍微随机的计划,以确保它们不会同时被回收。