ansible roles integration with jenkins devops
Una mirada en profundidad a los roles de Ansible, la integración con Jenkins y los módulos Ansible S3 y EC2:
En la parte 2 del serie sobre tutoriales de Ansible , aprendimos cómo se usan los libros de jugadas de Ans1ible para ejecutar múltiples tareas y hacer que todas las máquinas o servidores de destino alcancen un estado deseado particular.
Lectura recomendada => Serie de formación exponencial de DevOps
Los libros de jugadas de Ansible son principalmente archivos YAML que contienen múltiples tareas en un solo archivo enorme que no es modular ni reutilizable. Pero si necesita dividir toda su configuración y ser más modular y reutilizable, los roles de Ansible lo ayudarán mucho.
En este tutorial de Ansible , analizaremos los roles de Ansible, integraremos Ansible con Jenkins para la entrega continua desde un punto de vista de DevOps y, lo más importante, analizaremos los módulos de Ansible S3 y EC2 para administrar instancias de AWS EC2 (crear y finalizar instancias de EC2).
Lo que vas a aprender:
- Roles de Ansible
- Integración de Jenkins con Ansible
- Administre objetos de AWS S3 con Ansible
- Aprovisione una instancia de AWS EC2 con Ansible
- Terminación de instancias EC2
- Resumen
- Lectura recomendada
Roles de Ansible
Con los roles de Ansible puede agrupar sus variables, tareas, controladores, etc., lo que aumenta la reutilización y, sin duda, reduce los errores de sintaxis. Ayuda a ordenar todo el código.
Los roles de Ansible son similares a los módulos de Puppet y los libros de cocina de Chef.
Para crear roles, usa el ansible-galaxy comando que tiene todas las plantillas para crearlo.
Escenario de ejemplo
He sido especialista en DevOps durante la mayor parte de mi vida y he trabajado solo en CI y CD.
Entonces, por ejemplo, en Continuous Delivery, donde estoy implementando una nueva compilación de mi aplicación J2EE (archivo WAR) para tomcat, mis pasos serían los siguientes:
- Detener la aplicación
- Desinstalar la aplicación
- Implementar la nueva compilación de una aplicación
- Inicie la aplicación
Entonces estaría creando un rol con al menos 4 tareas y un archivo principal llamándolo. De esta manera, hago que mi código sea más modular y reutilizable. Así que llamemos a este rol como gato y créalo.
|_+_|
Una vez que se crea el rol, puede ver la estructura de directorio que ha creado.
Los principales componentes que usaremos en esta sección incluyen:
- tasks / main.yml - Este es el punto de partida para las tareas creadas para el rol. Puede usar el archivo main.yml para apuntar a los otros archivos de tareas.
- cuyo - Esto es para definir las variables utilizadas.
- meta - Esto es para definir información sobre usted o el autor.
Paso 1: crea la lista principal de todas las tareas
Edite el tasks / main.yml archivo y agregue el siguiente código. Según el escenario de ejemplo mencionado anteriormente, estamos definiendo 4 tareas diferentes. En la mayoría de los casos, la aplicación de implementación también iniciará la aplicación, por lo que es posible que no se requiera la última aplicación de inicio.
|_+_|Paso 2: cree los 4 archivos según el escenario
En las siguientes tareas acción: ec2_facts se utiliza para obtener datos de instancias EC2 remotas y llamarlos en jugadas / tareas
archivo tasks / stop_app.yml
|_+_|tasks / uninstall_app.yml
|_+_|tasks / deploy_app.yml
|_+_|En el código de implementación, si se utiliza JENKINS para compilar el archivo WAR, debe proporcionar el directorio fuente del archivo WAR en el Copiar módulo y el destino es la ubicación de la aplicación web del servidor de destino de tomcat.
tarea / start_app.yml
|_+_|Paso 3: definir variables
Edite el vars / main.yml archivo y agregue el código como se muestra a continuación.
|_+_|Paso 4: Defina la información en la metacarpeta
Edite el archivo meta / main.yml y agregue su información como autor, descripción y compañía.
cómo abrir un archivo apk en android|_+_|
Paso 5: crea un archivo site.yml principal
Por último, cree el archivo site.yml principal para llamar al rol creado, lo que a su vez ayudará a implementar la aplicación en los servidores o en una lista de hosts según el archivo de inventario. Crea el archivo como /etc/ansible/site.yml
|_+_|Paso 6: Ejecute el archivo de playbook site.yml
$ ansible-playbook site.yml
Inicie la URL de Tomcat para ver si la aplicación se ha implementado e iniciado.
HTTP: //: puerto / administrador
Integración de Jenkins con Ansible
En esta sección, veremos cómo se puede integrar Jenkins con Ansible. El archivo WAR creado mediante el proceso de creación se utilizará para implementar en Tomcat en la máquina de destino utilizando Ansible. Llamaremos al rol de Ansible creado en la sección anterior en Jenkins usando el complemento de Ansible.
Entonces, una vez que se realiza la compilación, la implementación del archivo WAR se activará automáticamente usando Ansible.
Mantengo esto simple y no he configurado Sonar o Artifactory o Junit durante las actividades de integración continua que también se pueden hacer.
Paso 1: Cree un trabajo de Jenkins y configure el repositorio de SCM usando el código en GitHub
Paso 2: configurar la compilación
Paso 3: crear un directorio de roles dentro del espacio de trabajo de Jenkins
Paso 4: cree el rol de tomcat en la ubicación del espacio de trabajo de Jenkins usando el comando que se muestra a continuación
$ sudo ansible-galaxy init tomcat –offline
Siga el procedimiento como en la sección anterior para crear todos los archivos para tasks, vars, meta y el site.yml principal.
qué tan diferente es c de c ++
El principal site.yml el archivo se crea en / var / lib / Jenkins / espacio de trabajo / directorio.
Paso 5: Configure el paso posterior a la compilación de Jenkins para invocar el libro de jugadas de Ansible y llamar al archivo site.yml. Guarde el trabajo.
Paso 6: Active el trabajo de compilación e inicie la URL de Tomcat para verificar si la aplicación se implementó correctamente.
Administre objetos de AWS S3 con Ansible
El módulo Ansible S3 se puede utilizar para obtener o poner un archivo desde o hacia un depósito S3. Para utilizar este módulo necesitaremos instalar y configurar votar módulo de Python que actúa como una API (interfaz del programa de aplicación) para acceder a AWS. Esto debe instalarse en el Maquina de control Ansible.
En Redhat Linux
|_+_|En Ubuntu
|_+_|Una vez hecho lo anterior, instale boto
|_+_|Si no puede instalarlo, deberá habilitar el repositorio de EPEL. El procedimiento se puede encontrar en la parte 1 de la serie de artículos en la sección de instalación de ansible.
Una vez hecho lo anterior, también debemos proporcionar las credenciales de usuario de AWS. Puede exportar las variables de entorno de AWS Access y Secret Key
|_+_|Si, incluso después de configurar las variables de entorno anteriores, obtiene un error porque no se encontraron las credenciales, también puede especificar lo mismo en el libro de jugadas.
Veamos ahora algunos ejemplos de cómo usar Ansible con depósitos de S3 y más adelante para crear y terminar instancias.
Ejemplo 1:Crea un cubo vacío con una carpeta
|_+_|Nota: Aquí, el modo se crea para crear un depósito y el permiso puede ser de lectura pública o de lectura y escritura pública.
Ejecute el libro de jugadas y vea el depósito creado con la carpeta de desarrollo dentro.
Ejemplo 2:Para copiar (cargar) un archivo al depósito de S3
|_+_|Aquí, el objeto es el archivo creado dentro del depósito. Puede ser un archivo o una carpeta. En este caso, es un archivo. La fuente es el archivo que se obtiene de la máquina local, que es la máquina de control de Ansible.
Nota:Aquí se pone el modo para cargar objetos.
Ejecute el libro de jugadas y observe el segmento S3.
Ejemplo 3:Obtenga (descargue) el archivo del depósito S3
|_+_|Nota:Aquí el modo es obtener objeto de descarga
Ejemplo 4:Eliminar un objeto o archivo del depósito de S3
|_+_|Nota:Aquí el modo es delobj para eliminar objeto
Ejemplo 5:Eliminar un cubo y todo el contenido
|_+_|Nota:Aquí el modo es eliminar para el depósito de eliminación
Aprovisione una instancia de AWS EC2 con Ansible
Por último, lo dejo con una de las características más importantes de Ansible, que es crear o poner en marcha una instancia AWS EC2 y también cómo terminar la instancia. Por supuesto, no olvides instalar votar que es un prerrequisito y también se asegura de exportar el usuario “AWS_ACCESS_KEY_ID” y “AWS_SECRET_ACCESS_KEY”.
En caso de que la exportación no funcione, asegúrese de agregar lo mismo en el código como se muestra a continuación.
java cómo eliminar un elemento de una matriz
El siguiente código le mostrará cómo crear una instancia EC2 junto con la creación de un grupo de seguridad y un par de claves.
- Crea un grupo de seguridad
- Crear par de claves y el archivo PEM
- Crear instancia EC2
- Guarde la dirección IP de la instancia EC2 en el archivo de inventario ansible
Supongo que los usuarios que realizan este ejercicio conocen bien los conceptos de AWS EC2.
Agregue el código siguiente a un archivo y ejecútelo para verificar la creación de la instancia EC2 en la consola de AWS. Como el código es grande, se divide en 2 páginas, pero asegúrese de guardarlo todo en un solo archivo yml.
|_+_|Ejecuta el libro de jugadas
/ etc / ansible / hosts archivo de inventario actualizado con IP privada
Iniciar sesión en la instancia
ssh -i 'vniranjan.pem' ec2-user@ec2-13-126-30-207.ap-south-1.compute.amazonaws.com
(Nota:Haga clic en la imagen de abajo para una vista ampliada)
Grupo de seguridad creado
Par de claves creado
Terminación de instancias EC2
En esta sección, conozcamos más sobre la terminación de instancias EC2.
En la siguiente pantalla, puede ver que hay 2 instancias en ejecución y los pasos para finalizar serían en el siguiente orden:
- Termine las instancias EC2 con los ID de instancia
- Quitar grupo de seguridad
- Quitar par de claves
Libro de jugadas para terminar ambas instancias EC2
|_+_|Resumen
Hoy en día, la mayoría de las organizaciones de TI están buscando algún tipo de diferenciadores para ganar negocios y mostrar lo mismo a sus clientes. Yo diría que la automatización es definitivamente uno de los diferenciadores clave.
Con herramientas como Ansible, soy de la opinión de que debería poder automatizar la mayoría de las tareas manuales repetitivas.
Por tanto, lo que hemos aprendido de este Serie de tutoriales de Ansible en 3 partes muestra Ansible como una herramienta de administración de configuración muy popular y poderosa que ayuda en diferentes áreas de automatización que van desde la automatización de tareas, la implementación de aplicaciones y el aprovisionamiento en la nube. Por lo tanto, estamos hablando principalmente de orquestación de TI.
Espero que hayas disfrutado de la variedad de tutoriales de Ansible y estoy seguro de que ya habrás adquirido un inmenso conocimiento sobre el concepto.
A continuación, aprenderemos cómo integrar Jenkins con Selenium, que también forma parte de nuestra serie de formación DevOps.
PREV Tutorial | SIGUIENTE Tutorial
Lectura recomendada
- Tutorial de Ansible: instalación y uso con módulos Ansible
- Integración continua en DevOps
- Entrega continua en DevOps
- Integración de Jenkins con Selenium WebDriver: Tutorial paso a paso
- ¿Qué es la prueba de integración (tutorial con ejemplo de prueba de integración)?
- Integración de selenio con JMeter
- Automatización de tareas mediante Playbooks de Ansible y Bóvedas de Ansible con ejemplos
- Implementación continua en DevOps