working aws codedeploy devops tool
Tutorial sobre implementación automatizada con AWS CodeDeploy:
En Parte 2 de las herramientas de AWS DevOps , vimos cómo se usó el servicio CodeBuild para construir el proyecto J2EE usando Maven.
En este tutorial, veremos cómo el archivo WAR de artefactos que se almacena en el bucket de S3 se puede utilizar para la implementación en el servidor de aplicaciones Tomcat mediante el servicio CodeDeploy.
Echa un vistazo => Guía ideal sobre formación DevOps
AWS CodeDeploy es el servicio de implementación que automatiza la implementación de la aplicación en las instancias de Amazon EC2 Linux o Windows.
Este tutorial también explicará cómo se puede integrar Jenkins con CodeDeploy.
Requisito previo:
- Cuenta con AWS preferiblemente un nivel gratuito.
- Conexión a Internet buena y rápida.
- Región de AWS utilizada: Asia Pacífico (Singapur).
- Instancia EC2 de Amazon Linux o RHEL.
- Tomcat instalado en la instancia EC2.
Nota: Para implementar el contenido, el repositorio de AWS CodeCommit no es compatible con el servicio CodeDeploy. Solo se admiten S3 y GitHub.
Lo que vas a aprender:
- Configurar CodeDeploy
- Lanzar la instancia EC2 de Amazon Linux
- Integración de AWS CodeDeploy con S3
- Crear aplicación CodeDeploy
- Integración de Jenkins con AWS CodeDeploy
- Conclusión
- Lectura recomendada
Configurar CodeDeploy
AWS CodeDeploy deberá trabajar con dos entidades para acceder a la instancia EC2 y al depósito S3 donde se almacenan los artefactos (archivo WAR) para su implementación. Para otorgar permiso para que el servicio CodeDeploy acceda a esos IAM, será necesario configurar roles. Los roles de IAM no están definidos para los usuarios de IAM, pero solo tienen acceso a las entidades.
#1) Crea el primer papel para que el servicio CodeDeploy acceda a la instancia EC2.
Inicie IAM y haga clic en Roles-> Crear rol.
Debajo Servicio de AWS haga clic en EC2 -> Seleccione su caso de uso -> EC2 y haga clic en Siguiente-> Permisos.
Selecciona el AWSCodeDeployRole en Nombre de la política y haga clic en Siguiente-> Revisar.
Ingrese un nombre de rol y haga clic en Crear rol.
Por último, edite la relación de confianza para este rol para asegurarse de que el servicio CodeDeploy sea accesible en general o en regiones / puntos finales específicos.
qué descargador de videos mp4 es compatible con youtube
Haga clic en el rol y actualice la relación de confianza como se muestra a continuación.
En la política, cambie EC2 a Codedeploy y haga clic en Actualizar la política de confianza.
2) Crea el segundo papel para la instancia EC2 que usa el servicio CodeDeploy para acceder al depósito S3.
Repita los pasos anteriores para este rol e ingrese como se muestra a continuación:
- Ir IAM -> Roles -> Crear rol.
- En AWS Service, seleccione EC2.
- Debajo, seleccione su caso de uso nuevamente y haga clic en EC2 y haga clic en el botón Siguiente-> Permisos.
- En la pantalla de política de permisos para adjuntar, seleccione AmazonS3ReadOnlyAccess y haga clic en el botón Siguiente-> Revisar.
- Nombra el rol HW-Codedeploy-EC2-S3 y haga clic en el Crear rol.
Ambos roles deberían estar ahora disponibles.
Lanzar la instancia EC2 de Amazon Linux
En esta sección, ahora aprovisionamos la instancia EC2.
Mientras aprovisiona la instancia, asegúrese de seleccionar el rol HW-Codedeploy-EC2-S3 durante Configurar los detalles de la instancia paso. Además, asegúrese de abrir el puerto 8080.
Junto con esto, también necesitaremos instalar Agente de CodeDeploy y Tomcat como un servidor de aplicaciones que se utilizará para la implementación de nuestra aplicación.
# 1) Instale y configure CodeDeploy Agent en la instancia de Amazon Linux
El agente CodeDeploy ayuda en las implementaciones y debe instalarse en cada instancia (entornos) donde se realizará la implementación.
Inicie sesión en la instancia de Linux y descargue el agente según la región que se esté utilizando. En nuestro caso, es la región de Singapur donde se encuentra el identificador ap-sureste-1.
El comando para descargar el agente estaría en el formato:
wget https: // aws-codedeploy-. s3.amazonaws.com/latest/install
# 2) Instale Tomcat en la instancia EC2
- Para instalar y ejecutar Tomcat, siga los siguientes pasos en el orden.
yum instalar tomcat7 tomcat7-webapps tomcat7-docs-webapp tomcat7-admin-webapps
- Habilite el usuario de tomcat para el administrador de aplicaciones. Realice los cambios como se muestra en el archivo /etc/tomcat7/tomcat-users.xml
- Por último, inicie el servicio Tomcat.
servicio tomcat7 start
- Lanzamiento Administrador de aplicaciones web Tomcat y verifique si está funcionando usando la URL http: //: 8080 / manager
Integración de AWS CodeDeploy con S3
Como se mencionó en la parte 2, CodeDeploy solo admite S3 y GitHub como repositorio de código que se utiliza para implementar las últimas versiones de la aplicación. Dado que el archivo WAR de nuestra aplicación se almacena en el depósito S3, debemos asegurarnos de que el formato mantenido sea un archivo ZIP.
Esto significa que el archivo WAR debe estar en un archivo ZIP, que es lo que admite el proceso de implementación mediante CodeDeploy.
- La AWS CLI (interfaz de línea de comandos) también debe instalarse en la instancia de Linux. por favor refiérase a URL instalar.
- Ejecute los siguientes pasos en la instancia de Linux para descargar el WAR del bucket de S3. Los siguientes pasos normalmente deben realizarse en la máquina de compilación.
establecer AWS_ACCESS_KEY_ID =
establecer AWS_SECRET_ACCESS_KEY =
establecer AWS_DEFAULT_REGION = ap-sureste-1
cd / opt / niranjan
aws s3 cp s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war / opt / niranjan
- CodeDeploy utiliza un appspec.yml archivo que contiene instrucciones de implementación para las instancias EC2. Este archivo debe estar en la raíz de una carpeta donde se descarga el archivo WAR de la aplicación.
Cree el archivo appspec.yml y la carpeta de scripts como se muestra a continuación:
Los eventos se ejecutan en el siguiente orden durante la implementación.
# 1) ApplicationStop
# 2) Antes de instalar
# 3) Instalar (se llama a la sección de archivos y se copia el archivo WAR)
# 4) Inicio de la aplicación
- La jerarquía de carpetas utilizada es
/ opt / niranjan
appspec.yml
AWS-HelloWorld-1.0.0.war
guiones
start_application
stop_application
uninstall_war_file
- Contenidos de los guiones
stop_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/stop?path=/AWS-HelloWorld-1.0.0
start_application:
curl –user tomcat: tomcat http://ec2-54-169-56-238.ap-southeast-1.compute.amazonaws.com:8080/manager/text/start?path=/AWS-HelloWorld-1.0.0
uninstall_war_file
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0.war
rm -rf /var/lib/tomcat7/webapps/AWS-HelloWorld-1.0.0
- Comprima el contenido y cargue el archivo ZIP en el depósito S3. Asegúrese de que VERSIONING esté habilitado en el depósito.
zip –r AWS-HelloWorld-1.0.0.war.zip AWS-HelloWorld-1.0.0.war scripts de appspec.yml
aws s3 cp /opt/niranjan/AWS-HelloWorld-1.0.0.war.zip
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
El archivo ZIP cargado en el depósito S3 se muestra en la siguiente pantalla:
En lugar de ejecutar los comandos uno por uno, puede crear un script ejecutable y agregar los comandos anteriores y ejecutarlo cada vez que un nuevo archivo WAR de aplicación esté disponible en la compilación.
Crear aplicación CodeDeploy
La aplicación CodeDeploy se crea para garantizar que la revisión adecuada del archivo WAR se implemente en el entorno adecuado, que es la instancia EC2.
Inicie el servicio CodeDeploy y haga clic en el Crear aplicación botón.
Ingrese el nombre de la aplicación, el grupo de implementación ( Ejemplo: QA-Env) y seleccione las instancias EC2 en ejecución.
Al final del formulario, seleccione el rol de servicio. Este es el otro rol que se creó anteriormente en el tutorial.
Clickea en el Crear aplicación botón.
Seleccione el grupo de implementación (QA-Env) y seleccione Acciones -> Implementar nueva revisión.
Dado que el archivo ZIP está en el depósito S3, ingrese la ubicación de revisión de la siguiente manera:
s3: //hwcodebuildbucket/HWJavaWebTarget/target/AWS-HelloWorld-1.0.0.war.zip
Clickea en el Desplegar botón. La implementación es exitosa como se muestra a continuación.
El archivo WAR se copió correctamente en el directorio de aplicaciones web de tomcat.
Examine la URL de la aplicación para asegurarse de que la aplicación se implemente correctamente.
Integración de Jenkins con AWS CodeDeploy
Como hemos visto en los 2 tutoriales anteriores, Jenkins se integra muy bien con las herramientas de AWS DevOps. Para integrar Jenkins con CodeDeploy, es necesario instalar el complemento. Hacer clic Aquí para descargar e instalar el complemento CodeDeploy.
Primero ingrese la clave secreta y de acceso para el usuario de IAM en Jenkins -> Configuración .
Conclusión
Hasta ahora, vimos cómo se puede usar CodeDeploy para automatizar la implementación de un archivo WAR de aplicación J2EE almacenado en el depósito S3 en la instancia EC2 que ejecuta el servidor de aplicaciones tomcat.
La serie de estas tres herramientas, es decir, CodeCommit, CodeBuild y CodeDeploy, ayudan en los aspectos de integración continua y entrega continua de DevOps. Junto con estas 3 herramientas, AWS CodePipeline es otra herramienta que ayuda en última instancia a la visualización final de la entrega de la aplicación.
Esté atento a nuestro próximo tutorial para obtener más información sobre la implementación de aplicaciones web .NET en AWS mediante Elastic Beanstalk.
PREV Tutorial | SIGUIENTE Tutorial
Lectura recomendada
- Principales herramientas de AWS DevOps para la construcción e implementación de la nube
- Implementación continua en DevOps
- Tutorial de AWS CodeCommit para la implementación de DevOps en la nube
- Entrega continua en DevOps
- Pruebas continuas en DevOps
- Importancia de pequeños incrementos de entregas en DevOps
- Tutorial de AWS CodeBuild: extracción de código de la compilación de Maven
- Automatización de DevOps: cómo se aplica la automatización en la práctica de DevOps