Ansible Roles: la mejor manera de desenredar sus Playbooks



Este blog de Ansible Roles habla sobre cómo se usan los roles para hacer que los libros de jugadas complejos sean legibles y reutilizables con una demostración de cómo configurar una pila MEAN.

Ansible nos permite automatizar la gestión de la configuración de los sistemas y añadir la cantidad de clientes que queramos. ¿Alguna vez te has preguntado qué tan complejo puede ser esto? ¿Alguna vez te has preguntado cuánto pueden llegar a ser largos y confusos los libros de jugadas? ¿Cómo es que Ansible todavía lo hace parecer una brisa? Utiliza el concepto de Ansible Roles y de eso es de lo que hablaremos en este blog.

Tópicos cubiertos:





Si desea dominar DevOps, ' curso sería su opción preferida.

Introducción a los roles de Ansible

Ansible Role es un concepto que se ocupa de ideas en lugar de eventos. Es básicamente otro nivel de abstracción utilizado para organizar libros de jugadas. Proporcionan un esqueleto para una colección independiente y reutilizable de variables, tareas, plantillas, archivos y módulos que se pueden cargar automáticamente en el libro de jugadas. Los libros de jugadas son una colección de roles. Cada rol tiene una funcionalidad específica.



Déjame explicarte esto con un ejemplo. Suponga que desea que su libro de jugadas realice 10 tareas diferentes en 5 sistemas diferentes, ¿usaría un solo libro de jugadas para esto? No, usar un solo libro de jugadas puede hacer que sea confuso y propenso a cometer errores. En su lugar, puede crear 10 roles diferentes, donde cada rol realizará una tarea. Luego, todo lo que necesita hacer es mencionar el nombre del rol dentro del libro de jugadas para llamarlos. Aprenderá a utilizar los roles más adelante en este blog.

Reutilización de roles de Ansible

Los roles de Ansible son independientes entre sí. La ejecución de un rol no depende de otros y, por lo tanto, se pueden reutilizar. Incluso puede modificar y personalizar estos roles según sus necesidades. Esto reduce nuestra tarea de reescribir una sección completa de código cada vez que lo necesitamos, simplificando así nuestro trabajo.

Volvamos al ejemplo anterior. Ha escrito 10 roles y ahora necesita usar 5 de ellos para otro conjunto de aprovisionamiento. ¿Escribes el libro de jugadas completo de nuevo? No, solo reutiliza esos 5 roles llamándolos en este nuevo Playbook. También puede realizar modificaciones si es necesario, pero aún así terminaría ahorrándole mucho tiempo.



Supongamos que necesita escribir un manual para configurar la pila LAMP. Tienes que crear 4 roles, cada uno para crear Linux, Apache, MongoDB y PHP. En el futuro, si desea otro libro de estrategias para configurar la pila LAMP además de WordPress, ¿volverá a crear nuevos roles para la pila LAMP y WordPress? ¡No! Simplemente puede reutilizar los roles anteriores (utilizados para la pila LAMP) y, además, crear un nuevo rol para WordPress.

Estructura del directorio de roles

Con Ansible Roles, espere que los archivos estén en una determinada estructura de archivos. La parte más confusa del uso de roles es comprender la jerarquía de archivos. Ansible ofrece una función llamada Ansible Galaxy que te ayuda a jugar con los roles. Ya sabemos dónde está nuestro Ansible en Ubuntu (/ etc / ansible). ¿Alguna vez ha visto un directorio llamado roles en / etc / ansible? Ese directorio existe exactamente por esta razón. Creas diferentes roles dentro de este directorio.

El directorio se verá así:

Árbol - Ansible Roles - Edureka

Puede crear un rol usando ansible-galaxy comando init dentro de / etc / ansible / roles.

$sudoansible-galaxy init

Verá que también se habrían creado otros directorios de funciones.

Estos directorios son tareas, controladores, valores predeterminados, vars, archivos, plantillas y meta y un archivo README.Marylandarchivo.

Tareas - Contiene la lista principal de tareas que debe ejecutar el rol. Esocontieneel archivo main.yml para ese rol en particular.

roles y responsabilidades de administrador de Linux

Manipuladores - Contiene controladores que pueden ser utilizados por este rol o incluso en cualquier lugar fuera de este rol.

Defaults - Contiene las variables predeterminadas que utilizará este rol.

Cuyo - Este directorio consta de otras variables que serán utilizadas por el rol. Estas variables se pueden definir en su libro de jugadas, pero es un buen hábito definirlas en esta sección.

Archivos - Contiene archivos que se pueden implementar con este rol. Contiene archivos que deben enviarse a los hosts mientras se configura el rol.

Meta - Define metadatos para este rol. Básicamente, contiene archivos que establecen dependencias de roles.

Cada tarea El directorio debe constar de un main.yml archivo donde se escribe el código real para ese rol en particular.

Ahora comprendamos el trabajo o las funciones con una demostración de la instalación de MEAN Stack.

Demostración: Instalación de MEAN Stack usando Ansible Roles

Estaré demostrando cómo instalar MEAN Stack usando Ansible Roles con solo ejecutar un solo libro de jugadas. Tendremos tres roles: 1) Instalar requisitos previos, 2) Instalar MongoDB y 3) Instalar NodeJS. Asumo que ya has instaló Ansible e hizo una conexión servidor-cliente en Ubuntu . Empecemos a jugar con Ansible Roles.

Paso 1 - Navegue al directorio / etc / ansible / roles y cree los roles para los requisitos previos, MongoDB y NodeJS.

$ cd / etc / ansible / roles $ sudo ansible-galaxy init prerrequisitos $ sudo ansible-galaxy init mongodb $ sudo ansible-galaxy init nodejs

Ahora debería ver tres roles en su directorio 'roles'.

Paso 2 - Escriba main.yml para conocer los requisitos previos que instalan Git.

$ cd prerequisites / tasks / main.yml --- - nombre: Instalar git apt: nombre: git estado: presente update_cache: sí

Paso 3 - Escriba main.yml para el rol de MongoDB

$ cd /mongodb/tasks/main.yml --- - nombre: MongoDB - Importar clave pública apt_key: keyserver: hkp: //keyserver.ubuntu.com: 80 id: EA312927 - nombre: MongoDB - Agregar repositorio apt_repository: filename: '/etc/apt/sources.list.d/mongodb-org-3.2.list' repo: 'deb http://repo.mongodb.org/apt/ubuntu trusty / mongodb-org / 3.2 multiverse' estado: presente update_cache : sí - nombre: MongoDB - Instalar MongoDB apt: nombre: mongodb-org estado: presente update_cache: sí - nombre: Iniciar mongod shell: 'mongod &'

Etapa 4 - Escriba main.yml paranodejspapel

$ cd nodejs / tasks / main.yml --- - nombre: Node.js - Obtener el script get_url: url: 'http://deb.nodesource.com/setup_6.x' dest: '{{var_node}} / nodejs .sh '- nombre: Node.js - Establecer permisos de ejecución para el archivo de secuencia de comandos: ruta:' {{var_node}} / nodejs.sh 'modo:' u + x '- nombre: Node.js - Ejecutar el shell de secuencia de comandos de instalación:' {{var_node}} / nodejs.sh '- nombre: Node.js - Elimina el archivo de secuencia de comandos de instalación: ruta:' {{var_node}} / nodejs.sh 'estado: ausente - nombre: Node.js - Instala Node.js apt : name = {{item}} state = present update_cache = yes with_items: - build-essential - nodejs - name: Node.js - Instala bower y gulp globalmente npm: name = {{item}} state = present global = yes with_items : - glorieta - trago

Paso 5 - Escribe tu libro de jugadas principal

$ cd /etc/ansible/mean.yml --- - hosts: nodos usuario_remoto: ansible se convierte: sí se convierte en método: sudo vars: #variable necesaria durante la instalación del nodo var_node: / tmp roles: - requisitos previos - mongodb - nodejs

Ahora que hemos definido roles para instalar los prerrequisitos, MongoDB y NodeJs, despleguémoslos. Ejecute el libro de jugadas con el siguiente comando.

$sudoansible-playbook /etc/ansible/mean.yml -K

que es el formato en python

Como puede ver, todas las tareas se han ejecutado y su estado ha cambiado. Esto significa que los cambios del libro de jugadas se han aplicado tanto a su servidor como al host. Configurar MEAN Stack es solo un ejemplo. Puede configurar literalmente cualquier cosa y todo con Ansible Roles.

Esto nos lleva al final del blog de Ansible Roles. Si encuentra útil este artículo, consulte el ' ofrecido por Edureka. Cubre todas las herramientas que han mejorado la industria de las TI.

Tienes una pregunta para nosotros? Por favor publícalo en y nos pondremos en contacto contigo.