【问题标题】:AWS Elastic Beanstalk - How To Upgrade Existing Environment from Ruby 2.1 to Ruby 2.2AWS Elastic Beanstalk - 如何将现有环境从 Ruby 2.1 升级到 Ruby 2.2
【发布时间】:2015-09-16 05:04:15
【问题描述】:

AWS Elastic Beanstalk - 无法使用最新平台克隆eb upgrade 从 Ruby 2.1 到 Ruby 2.2

我一直在砸这个头。早在 5 月,AWS 就宣布他们的 Ruby Elastic Environments 现在提供 Ruby-2.2(例如 ruby-2.2-(passenger-standalone)ruby-2.2-(puma))。我无法将现有的 ruby​​-2.1 环境升级到 ruby​​-2.2。看来我必须完全重新创建它们……这看起来很傻?还有其他人遇到这种情况吗?我只是缺少一些简单的东西吗?

额外信息

几个月来,我一直在我的stagingproduction 环境中兴高采烈地使用ruby-2.1-(passenger-standalone)。现在我想将它们升级到最新的 ruby​​-2.2 平台。 AWS 文档说这很简单,实际上他们的一些文档甚至似乎声明您可以使用eb clone <env-name> --update。我正在使用的EB CLI 3.4.5 中不存在该标志:( 此外,Web 控制台有一个 Clone with Latest Platform 选项菜单项,但它已被禁用。

看来,要获得最新的 Ruby-2.2 实例,我所能做的就是从头开始创建一个全新的环境。这太烦人了。

这就是我尝试过的...

$ eb status
Environment details for: staging
  Application name: xyz
  Region: us-west-2
  Deployed Version: fbe7
  Environment ID: someId
  Platform: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
  Tier: WebServer-Standard
  CNAME: bla.bla.bla.elasticbeanstalk.com
  Updated: 2015-06-26 22:48:59.689000+00:00
  Status: Ready
  Health: Green

太好了,确认我使用的是 Ruby 2.1。所以让我们尝试升级:

$ eb upgrade
Environment already on most recent platform version.

好的,那很好,那么平台本身呢:

$ eb platform select
It appears you are using Ruby. Is this correct?
(y/n): y

Select a platform version.
1) Ruby 2.2 (Puma)
2) Ruby 2.2 (Passenger Standalone)
3) Ruby 2.1 (Puma)
4) Ruby 2.1 (Passenger Standalone)
5) Ruby 2.0 (Puma)
6) Ruby 2.0 (Passenger Standalone)
7) Ruby 1.9.3
(default is 1): 2

现在,这是我的平台设置:

$ eb platform show
Current default platform: Ruby 2.2 (Passenger Standalone)
New environments will be running:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.2 (Passenger Standalone)

Platform info for environment "staging":
Current: 64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)
Latest:  64bit Amazon Linux 2015.03 v1.4.3 running Ruby 2.1 (Passenger Standalone)

所以新环境将利用 Ruby-2.2 版本。太好了,但是我真的必须淘汰我已经配置的 Ruby-2.1 版本来代替新创建的 Ruby-2.1 版本吗?来吧?

【问题讨论】:

  • 对于它的价值,几个月前我试图用 Puma 建立一个 环境,但发现它完全坏了。当我回到Passenger时,它就起作用了。
  • 不知道为什么这个问题以-1票开始......蹩脚酱。

标签: ruby amazon-elastic-beanstalk ruby-2.1 ruby-2.2


【解决方案1】:

我找到了解决这个问题的不同方法。

我的工作方式与上面的评论类似,但我设法更新了现有的 beanstalk 环境,而不是将代码部署到全新的环境。

我做的步骤:

  1. 在 beanstalk 上启动了一个全新的环境,运行我需要的 ruby​​ 版本 2.3(在我的情况下,我需要从 Ruby 2.2 更新到 Ruby 2.3)
  2. SSH-ed 到新实例并安装我的应用程序需要的所有依赖项(包、开发工具等) - 您也可以在 .ebextensions 目录中执行这些操作
  3. 从运行 ruby​​ 2.3 的实例创建了一个自定义 AMI,并安装了所有东西
  4. 使用 Ralph 发布的相同命令,但需要一些 tweeks:
aws elasticbeanstalk update-environment --region "REGION" --environment-name "ENV_NAME" --solution-stack-name "64bit Amazon Linux 2018.03 v2.8.1 running Ruby 2.3 (Puma)" --option-settings Namespace=aws:autoscaling:launchconfiguration,OptionName=ImageId,Value="ami- 
xxxxxxxx"

AMI 选项设置 对我来说很关键,因为这帮助我安装了 ruby​​ 2.3.7 的 AMI,用于在现有环境中启动新实例。 以前每次尝试都按 Ralph 的建议命令失败。

【讨论】:

    【解决方案2】:

    我通过使用aws cli(不是eb cli)找到了解决方案:

    aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2016.03 v2.1.0 running Ruby 2.3 (Puma)" --environment-name "dev-bg-123456" --region "us-east-1"
    

    aws cli可以用homebrew安装:

    brew install awscli
    

    【讨论】:

    • 嗨@Gavin,很抱歉它不适合你。看到错误消息或其他输出来调试它也许很有趣?
    • 嗨@Ralph,如果在 gem 文件中指定了 ruby​​ 版本,此解决方案将失败。应用程序无法启动,因为 ruby​​ 版本不匹配,因此恢复更改。
    • 使用此方法成功从 ruby​​ 2.2 更新到 2.3。
    • 遇到了与@Gavin 相同的问题,通过首先从 Gemfile 中删除 Ruby 版本来解决它 - 现在服务器将从环境中知道 Ruby 版本 - 然后使用该 Gemfile 进行部署;然后运行命令(aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2016.09 v2.3.2 running Ruby 2.3 (Puma)" --environment-name "env")。之后,您可以随意将 Ruby 版本重新添加到 Gemfile,但请注意它必须与他们服务器上的版本匹配,例如目前最新的是2.3.3,但是服务器只有2.3.1。
    • 对于寻找所有可用解决方案堆栈名称的人,您可以运行以下命令 aws elasticbeanstalk list-available-solution-stacks
    【解决方案3】:

    我对这个挑战的解决方案是:

    1. 启动一个全新的环境。
    2. 创建一个 Web 应用程序或 Worker。
    3. 选择您想要的环境,可能是最新最好的环境。在我的例子中,使用 Ruby-2.2 的乘客。
    4. 我选择部署示例应用程序以便新环境成功。
    5. 为您的新环境选择其余选项并启动它。

    成功启动后,我设置了所有环境变量;例如我所有的数据库、smtp、RAILS_ENV/RACK_ENV 等。然后我转到我以前部署的应用程序,并将我的最新质量版本简单地部署到全新的环境中。

    人们会同意,这比简单的eb upgrade 要多得多。跛脚酱。

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2016-05-14
      • 2019-10-05
      • 2021-09-29
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多