ruby elastic-beanstalk ruby-2.1 amazon-elastic-beanstalk ruby-2.2

AWS Elastic Beanstalk-Cómo actualizar el entorno existente de Ruby 2.1 a Ruby 2.2



elastic-beanstalk ruby-2.1 (3)

Encontré un enfoque diferente a este problema.

La forma en que lo hice es similar al comentario anterior, pero logré actualizar el entorno de beanstalk existente y no implementar el código en uno completamente nuevo.

Pasos que hice

  1. Se lanzó un entorno completamente nuevo en beanstalk que ejecuta la versión de ruby ​​que necesito, 2.3 (en mi caso, necesitaba una actualización de Ruby 2.2 a Ruby 2.3)
  2. SSH-ed en la nueva instancia e instaló todas las dependencias que mi aplicación necesita (paquetes, herramientas de desarrollo, etc.); también puede hacer esto en el directorio .ebextensions
  3. Creé una AMI personalizada desde la instancia que ejecuta ruby ​​2.3 con todo instalado
  4. Usó el mismo comando que Ralph publicó pero con algunos 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"

La configuración de opciones de AMI fue clave para mí, ya que me ayudó a utilizar la AMI con ruby ​​2.3.7 para usarla para lanzar la nueva instancia en el entorno existente. Anteriormente, solo con golpear el comando sugerido de Ralph fallaba en cada intento.

AWS Elastic Beanstalk: no se puede clonar con la última plataforma o eb upgrade de Ruby 2.1 a Ruby 2.2

He estado aplastando mi cabeza en este caso. En mayo, AWS anunció que sus entornos Ruby Elastic ahora ofrecen Ruby-2.2 (por ejemplo, ruby-2.2-(passenger-standalone) o ruby-2.2-(puma) ). No puedo actualizar mis entornos existentes de ruby-2.1 a ruby-2.2. Parece que tengo que recrearlos completamente ... ¿eso parece tonto? ¿Alguien más está experimentando esto? ¿Me estoy perdiendo algo simple?

Información extra

He estado usando alegremente ruby-2.1-(passenger-standalone) durante varios meses en mis entornos de montaje y producción . Ahora me gustaría actualizarlos a la última plataforma ruby-2.2. La documentación de AWS dice que esto es bastante trivial, de hecho, parte de su documentación parece indicar que se puede usar una eb clone <env-name> --update . Ese indicador no existe en el EB CLI 3.4.5 que estoy usando :( Además, la consola web tiene un elemento del menú de opciones Clonar con la última plataforma , pero está deshabilitada.

Parece que todo lo que puedo hacer para llegar a las últimas instancias de Ruby-2.2 es crear un entorno completamente nuevo desde cero. Eso es tremendamente molesto.

Así que aquí está lo que he intentado ...

$ 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

Genial, confirma que estoy usando Ruby 2.1. Así que vamos a tratar de actualizar:

$ eb upgrade Environment already on most recent platform version.

Bien, eso está bien, ¿y qué hay de la plataforma en sí?

$ 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

Así que ahora, aquí está mi configuración de la plataforma:

$ 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)

Así que los nuevos entornos aprovecharán las ediciones de Ruby-2.2. Eso es genial, pero ¿tengo que retirar seriamente mis ediciones Ruby-2.1 ya configuradas en lugar de una edición Ruby-2.1 recién creada? ¿Venga?


Encontré una solución para esto, usando el aws cli (NO el 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"

El aws cli se puede instalar con homebrew :

brew install awscli


Mi solución a este desafío fue:

  1. Lanzar un nuevo entorno.
  2. Crear una aplicación web o un trabajador.
  3. Elija el entorno que desee, probablemente el más grande. En mi caso Pasajero con rubí-2.2.
  4. Elijo implementar la aplicación de ejemplo para que el nuevo entorno tenga éxito.
  5. Elija las opciones restantes para su nuevo entorno y deje que se inicie.

Luego de un lanzamiento exitoso, configuré todas las variables de mi entorno; por ejemplo, toda mi base de datos, smtp, RAILS_ENV / RACK_ENV, etc. Luego, voy a mis aplicaciones implementadas anteriormente y simplemente implemento mi última versión de calidad en el nuevo entorno.

Uno estaría de acuerdo en que esto es mucho más trabajo que una simple eb upgrade . Salsa Lame