【发布时间】:2016-06-03 09:09:18
【问题描述】:
设置:
我有一个附加了 Auto Scaling 组的 AWS 负载均衡器。它会启动一个 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 拉取最新代码,更新 composer 依赖项(它是一个基于 Lumen 的 PHP RESTful 应用程序服务),然后就可以使用了。
这一切都有效。
当我手动 detatch 我的 Auto Scaling 组中的所有 EC2 实例时,会立即创建新实例并成功获取最新代码。可爱!
我要做什么
在我将服务器代码提交到 GitHub 后,我想运行一个本地命令 - 例如,deploy staging,它会自动执行以下操作:
- 终止 Auto Scaling 组中的当前实例
- 这会导致创建新实例,然后更新为最新代码。
我现在在做什么
它仍然非常手动。我提交到 GitHub,然后我必须去 AWS Web 控制台并“分离”我所有的 EC2 实例,以便新的实例取代它们 - 然后我必须去终止那些分离的实例。
问题
那么 - 考虑到我想要完成的任务,我该如何完成呢?
在我的 Windows PC 上,我想输入一个单词来完成上述所有操作。
也许我的顺序不正确 - 例如,新实例应该在 终止旧实例之前启动,等等 - 在这种情况下,请告诉我完成的最佳方法东西。
我也在寻找 确切 建议:如何实现这一点。我是否需要下载适用于 Windows 的 AWS CLI 工具?如何从家用 PC 执行 AWS 命令?等等。
谢谢!
编辑
或者(也许这是一种更清洁的方式?),我也可以告诉我的 Auto Scaling 组/负载均衡器中的当前实例“进行 GitHub 更新”.. 但我不知道该怎么做。实例仅在首次创建时执行一次。
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-elb autoscaling aws-cli