pin-cnx / laravel-aws-deploy
实现无停机时间自动扩展部署。通过备份主实例到AMI,创建带有这些AMI的启动配置,更新为自动扩展,生成新实例,终止旧实例。
1.0.8
2020-05-17 15:43 UTC
Requires
- aws/aws-sdk-php: ^3.54
README
该 artisan 命令用于将 aws EC2 自动扩展部署到 aws 无停机时间。此命令将执行以下步骤。
- 备份主实例到 AMI
- 创建带有这些 AMI 的启动配置
- 更新为自动扩展
- 生成新实例
- 终止旧实例。
在使用此插件之前
- 您应该有一个主实例以生成 AMI(您必须提供实例 ID)
- 然后您必须在 aws 中设置自动扩展(您必须在配置中提供自动扩展名称)
- 需要安全组(通常我从主实例获取它,但只是为不同的组打开选项)
安装
$ composer require pin-cnx/laravel-aws-deploy
将此配置添加到您的 services.php
修改 services.php 添加以下配置。您可以有多个配置文件,它将按顺序执行所有配置(或只需指定配置文件,请参见如何运行命令)
'ec2' => [ 'key' => env('EC2_KEY'), 'secret' => env('EC2_SECRET'), 'region' => env('EC2_REGION', 'ap-southeast-1'), 'profiles' => [ 'AnyName' => [ // The value with *** need to change to your own aws component name 'AMI_PREFIX' => 'AWSDEPLOY', // Prefix for the AMI just for easy to regconize ie. AWSDEPLOY' 'InstanceId' => '***i-0123456789abcdef', //The master instance id to clone ie. i-0123456789abcdef 'KeyName' => '***serverkey', // The pem key name to access to the auto scale's instances 'AutoScalingGroupName' => '***my-auto-scale', // The auto scale group name, 'SecurityGroups' => '***sg-123456', // The security group of instance ie. sg-123456 'InstanceType' => env('EC2_SIZE','t3.nano') , // 'Instance type ie. t2.micro', 'VolumeSize' => 30, //(Optional) Default:30 SSD size 'region' => ['ap-southeast-1a','ap-southeast-1b'], // Region to spawn instances 'NoReboot' => false, //(Optional) Default:false Is it will reboot the master instance to make AMI 'IsTerminateCurrentInstance' => true, //(Optional) Default:true Is it will terminate the old instance which launch with old configuration. 'IamInstanceProfile' => null, //(Optional) Default:null 'AMI_TAGS' => [ // (Optional) What ever tag you need for the new instances [ 'Key' => 'stage', 'Value' => 'aws-deploy', ], [ 'Key' => 'Project', 'Value' => 'aws-deploy', ] ] , 'UserData' => "#!/bin/bash \n" . // (Optional)The first boot command to the instances "#su - www-data -c \"php /var/www/html/artisan queue:restart\"" ] ] ]
运行命令
运行所有配置文件
$ php artisan ec2backup
或仅运行一个配置文件
$ php artisan ec2backup --profile AnyName
故障排除
AWS HTTP 错误:SSL CA 套件未找到
由于某些原因,aws 需要具有 ca-bundle.crt 与 curl 库一起运行。因此,从该 Git 存储库复制 ca-bundle.crt 然后将它放置在您的项目中的 /config/ca-bundle.crt
401 未授权
不要忘记添加具有访问 EC2 权限的 env EC2_KEY 和 EC2_SECRET
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件。