AWS Elastic Beanstalk es un servicio fácil de utilizar para implementar y escalar servicios y aplicaciones web.
Ahora veremos como hacer el upgrade de la versión de PHP de un servicio ( enviroment ) ya corriendo.
Antes de hacerlo :
- Ya debes de estar familiarizado con lo que es ElasticBeanstalk.
- Debes de tener los comandos de consola de EB instalasdos ( EB-CLI ).
- Asumiremos el upgrade desde una máquina con consola linux.
Creando la configuración inicial.
Antes que todo nos situamos en la carpeta de la aplicación de la cual haremos el upgrade y ejecutamos el comando eb init. Si ya lo habíamos hecho anteriormente usaremos la opción de «interactive» como fue mi caso. Resaltaré en negrita la selección del menú correspondiente.
ctala@BeaTriX-CTMGroup:~/REPOS/tbk-aas-server$ eb init --interactive
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
(default is 3):
Select an application to use
1) APP1
2) APP2
3) APP3
4) [ Create new Application ]
(default is 3): 3
Select the default environment.
You can change this later by typing "eb use [environment_name]".
1) APP3-devel
2) APP3-prod
(default is 1): 2
Select a platform.
1) Node.js
2) PHP
3) Python
4) Ruby
5) Tomcat
6) IIS
7) Docker
8) Multi-container Docker
9) GlassFish
10) Go
11) Java
(default is 1): 2
Select a platform version.
1) PHP 5.4
2) PHP 5.5
3) PHP 5.6
4) PHP 7.0
5) PHP 5.3
(default is 1): 4
Con esto lo que hacemos es decirle a beanstalk como funcionar. Si se creara la aplicación desde cero partiría de inmediato con php7, pero como no es nuestro caso lo que haremos primero es guardar la configuración de nuestro enviroment según lo que tenemos en la nube.
Creando y editando la configuración del enviroment.
ctala@BeaTriX-CTMGroup:~/REPOS/tbk-aas-server$ eb config save app3-prod --cfg app3-prod-config
Configuration saved at: /home/ctala/REPOS/app3/.elasticbeanstalk/saved_configs/app3-prod-config.cfg.yml
Una vez guardada la configuración por defecto la editaremos según lo que necesitemos. En nuestro caso buscamos la línea que define el Stack a ocupar y la editamos.
Cambiaremos esto :
SolutionStack: 64bit Amazon Linux 2016.03 v2.1.3 running PHP 5.6
Por esto
SolutionStack: 64bit Amazon Linux 2016.03 v2.1.3 running PHP 7.0
Si, solo cambiaremos la parte donde sale la versión de PHP. En este caso es sencillo ya que el SolutionStack existe y se llama de esa manera.
Actualizando la configuración en la nube.
Ya teniendo nuestra nueva configuración lo que debemos hacer es subirla a amazon y luego cargarla.
ctala@BeaTriX-CTMGroup:~/REPOS/app3$ eb config put app3-prod-config
ctala@BeaTriX-CTMGroup:~/REPOS/app3$ eb config app3-prod --cfg tbk-aas-server-prod-config
Printing Status: INFO: Environment update is starting.
INFO: Updating environment app3-prod's configuration settings.
INFO: Created Auto Scaling launch configuration named: awseb-e-4g3mx5ymyq-stack-AWSEBAutoScalingLaunchConfiguration-16CD5LSR5ERIN INFO: Auto Scaling group update progress: Rolling update initiated. Terminating 1 obsolete instance(s) in batches of 1, while keeping at least 1 instance(s) in service. Waiting on resource signals with a timeout of PT30M when new instances are added to the autoscaling group.
INFO: Auto Scaling group update progress: Temporarily setting autoscaling group MinSize and DesiredCapacity to 2.
INFO: Environment health has transitioned from Ok to Info. Configuration update in progress (running for 30 seconds).
INFO: Auto Scaling group update progress: New instance(s) added to autoscaling group - Waiting on 1 resource signal(s) with a timeout of PT30M.
INFO: Added instance [i-051d72f3a5ba93b63] to your environment. INFO: Still waiting for the following 1 instances to become healthy: [i-051d72f3a5ba93b63].
INFO: Deleted Auto Scaling launch configuration named: awseb-e-4g3mx5ymyq-stack-AWSEBAutoScalingLaunchConfiguration-10200GU7CE7MB
INFO: Successfully deployed new configuration to environment.
Ahora así de simple hemos actualizado el enviroment para que use la versión de php7 sin tener downtime y manteniendo los servicios relacionados como pueden ser las bases de datos.
Espero que les sirva !