pin-cnx/laravel-aws-deploy

实现无停机时间自动扩展部署。通过备份主实例到AMI,创建带有这些AMI的启动配置,更新为自动扩展,生成新实例,终止旧实例。

安装次数: 278

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分叉: 1

开放问题: 0

类型:laravel-package

1.0.8 2020-05-17 15:43 UTC

This package is auto-updated.

Last update: 2024-09-18 01:18:24 UTC


README

该 artisan 命令用于将 aws EC2 自动扩展部署到 aws 无停机时间。此命令将执行以下步骤。

  1. 备份主实例到 AMI
  2. 创建带有这些 AMI 的启动配置
  3. 更新为自动扩展
  4. 生成新实例
  5. 终止旧实例。

在使用此插件之前

  • 您应该有一个主实例以生成 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)。有关更多信息,请参阅许可证文件