Automatiza las implementaciones de código
Disclaimer:
POST en redacción!
Primero los permisos : IAM Roles
Como ya sabemos, ~casi~ todo en AWS estan controlados por permisos o los IAM (Identity and Access Management) y CodeDeploy necesita contar con su ROL asi como las EC2 involucradas en las operaciones tambien necesitaran un IAM ROLE
Service ROLE para CodeDeploy
Vamos a Crear un Rol llamado AWSCodeDeployRole
para eso debemos ir a IAM > Roles > Create new role
en Step 1 : Select role type Selecciona Amazon EC2
en Step 3 : Attach policy
- busca
AWSCodeDeployRole
marcala
Con ambas Policy seleccionadas, da click en Next Step
en Step 4 : Set role name and review
- en Role Name pon :
AWSCodeDeployRole
- en Role description pon :
Permite a CodeDeploy Acceso y gestion de EC2
IAM ROLE para las EC2
Vamos a Crear un Rol llamado AWSCodeDeployRole
para eso debemos ir a IAM > Roles > Create new role
en Step 1 : Select role type Selecciona Amazon EC2
en Step 3 : Attach policy
- busca
AmazonS3ReadOnlyAccess
marcala
Con ambas Policy seleccionadas, da click en Next Step
en Step 4 : Set role name and review
- en Role Name pon :
AWSCodeDeployRoleForEC2
- en Role description pon :
Permite a EC2 Acceso de Lectura S3 para descargar los SourceCodes
Las Instancias
Necesitaremos las EC2 donde se desplegara el código fuente y estas pueden ser varias alternativas, mencionaremos dos de ellas:
Un grupo de auto escalamiento (ASG) : Necesitaremos tener configurado previamente el ASG y sus EC2
Instancias EC2 : Necesitaras tener al menos una EC2 corriendo para poder desplegar el el código en ella.
Cualquiera sea el caso, tanto para el ASG como para una EC2 las instancias deben tener instalado Code Deploy Agent
el servicio que permitira a CodeDeploy poder comunicarse con las EC2 y poder ejecutar las operaciones necesarias para poder desplegar el código fuente de las aplicaciones.
Instalando Code Deploy Agent
Instalamos las dependencias necesarias:
apt-get update
apt-get install python-pip
apt-get install ruby
apt-get install wget
Nos movemos a la ruta del user admin y descargamos el Agente
cd /home/admin
wget https://xxx.s3.amazonaws.com/latest/install
reemplazar xxx
por una de las siguientes zonas
aws-codedeploy-us-east-1 for instances in the US East (N. Virginia) region
aws-codedeploy-us-west-1 for instances in the US West (N. California) region
aws-codedeploy-us-west-2 for instances in the US West (Oregon) region
aws-codedeploy-ap-south-1 for instances in the Asia Pacific (Mumbai) region
aws-codedeploy-ap-northeast-2 for instances in the Asia Pacific (Seoul) region
aws-codedeploy-ap-southeast-1 for instances in the Asia Pacific (Singapore) region
aws-codedeploy-ap-southeast-2 for instances in the Asia Pacific (Sydney) region
aws-codedeploy-ap-northeast-1 for instances in the Asia Pacific (Tokyo) region
aws-codedeploy-eu-central-1 for instances in the EU (Frankfurt) region
aws-codedeploy-eu-west-1 for instances in the EU (Ireland) region
aws-codedeploy-sa-east-1 for instances in the South America (São Paulo) region
Por ejemplo, si nuestras instancias estan en oregon debemos descargar desde:
wget https://aws-codedeploy-us-west-2.s3.amazonaws.com/latest/install
Luego aplicamos permisos de ejecución e instalamos.
chmod +x ./install
./install auto
Verificamos la instalación
service codedeploy-agent status
service codedeploy-agent start
Con el servicio ya instalado y funcionando nuestra EC2 ya esta preparada para recibir las instruicciones desde CodeDeploy
Si se va a Generar un ASG y su respectiva Launch Configurations basa en una AMI, esta AMI debe haber sido creada en base a una EC2 que tenga CodeDeploy Agent instalado y corriendo.
IMPORTANTE
: Todas las EC2 que se creen para interactuar con Codedeploy deberan tener asignado el IAM Role
que creamos para tal proposito (AWSCodeDeployRoleForEC2
) de lo contrario las EC2 no tendran acceso a S3 para obtener el SourceCode.
CodeDdeployAgent
genera logs de sus operaciones en /var/log/aws/codedeploy-agent/
para revisar si algo no funciona, puedes monitorear usando tail -f /var/log/aws/codedeploy-agent/codedeploy-agent.log
para verlos en tiempo real mientras se ejecuta un despliegue.
Creando CodeDeploy en una EC2
Create application
Application name: Aplicacion1
Deployment group name: Quality Assurance
Deployment type
Seleccionaremos In-place deployment
Environment configuration
Seleccionamos la pestaña Amazon EC2 instances
en Key
seleccionamos Name
en Value
seleccionamos ElNombreDeLaEC2
en Matching instances
se mostrarán todas las instancias que hagan match con el tag indicado y sera sobre ellas que se desplegara el SourceCode.
Deployment configuration
Seleccionamos AllAtOnce
TODO: Detallar cada uno de ellos
Service role
Seleccionamos el rol que creamos para Codedeploy : AWSCodeDeployRole
Se selecciona por ARN, el ARN del ROL puede ser consultado directamente en IAM