La estructura de los roles en Ansible nos permite importar parámetros específicos automáticamente, acciones, documentos, scripts y controladores que se basan según un formato de documento predefinido en Ansible. El método principal para dividir un libro de jugadas en muchos documentos es el papel. Facilita la creación de libros de jugadas complicados y también facilita cómo los reutilizaremos en Ansible. Al dividir el libro de jugadas, puede separarlo en múltiples partes reutilizables. Entonces, cada rol está restringido a una característica específica o resultados previstos. Cada uno de los procedimientos, requeridos para entregar la conclusión que se mantuvo dentro de ese papel en particular, se definen como dependientes en otros roles.
Estructura de roles en Ansible
Ahora, comprendamos la estructura básica de los roles ansibles. Para utilizar roles en Ansible, crearemos un nuevo directorio con la identidad exacta de cada rol. En la jerarquía de roles, los documentos se organizan de manera subdirectora. Para crear el directorio, emplearemos el siguiente comando de rol de Galaxy Ansible:
[root@maestro ansible]# ansible-galaxy init win_package_install_role
Después de ejecutar el comando anterior, obtendremos el siguiente resultado deseado:
- Rol win_package_install_role se creó con éxito
Dado que Ansible-Galaxy en sí se incluye en la herramienta Ansible, no necesitamos instalar más componentes para ella. Si desea verificar la estructura jerárquica del rol y varios directorios con un diseño modificable, los documentos se mostrarán después de ejecutar el comando a continuación:
[root@master ansible]# árbol win_package_install_role
Como se muestra, ahora tenemos un total de 8 directorios disponibles en el rol llamado "win_package_install_role" y 8 documentos cambiables.
A veces, necesitamos actualizar documentos como ReadMe.MD y Meta/Main.YML describir adecuadamente su papel a pesar de que no es necesario que funcione el papel. Es esencial incluir cualquier requisito en Meta/Main.yml si el rol necesita acceder a roles adicionales para ejecutar. Esto permitirá a Ansible lograr esto según sea necesario. Para ingresar al nuevo directorio, que hemos creado recientemente, escribiremos la declaración a continuación en el terminal.
[root@master ansible]# cd win_package_install_role
Luego, mostrará el nuevo directorio agregado a la ruta principal que se muestra a continuación:
[root@master ansible] ~/win_package_install_role#
No se necesitan requisitos previos para su rol Win_Package_install_Role. Un formato de meta-archivo en funcionamiento se muestra aquí como un ejemplo. Si desea cambiarlo para reflejar su nombre, el nombre de su negocio y, si corresponde, también cambie la licencia escribiendo el siguiente comando:
[root@maestro ansible] ~/win_package_install_role# nano meta/main.YML
Especificando las tareas de papel en Ansible
La mayoría de las veces, el papel llevaría a cabo una o incluso más actividades para configurar el dispositivo remoto bajo los criterios del rol. Instalar y configurar win_package_install_role es lo que debemos hacer en esta situación.
win_package_install_role /tareas /main.YML:
Cuando ejecutamos un rol, busca por defecto la subcarpeta de "tareas" para un documento llamado Main.yml y luego enumeraremos todas las tareas en él. Para roles más complejos, puede dividir las tareas en múltiples documentos y llamarlos desde Main.YML utilizando los módulos de inclusión de tareas o tareas de importación. A continuación se muestra el comando que utilizaremos para ingresar al directorio de la tarea.
# archivo de tareas para win_package_install_role
- Nombre: Obtener product_name estado de instalación
win_shell: 'get-itemproperty hklm: \ software \ wow6432node \ Microsoft \ Windows \ CurrentVersion \ Uninstall \* | Where -Object -Property DisplayName -Olly "*product_name*" | Format -table identificando number, nombre, displayName, localpackage -autosize '
Registrarse: instalación_status
- depurar:
MSG:
- "Producto ya instalado"
- "estado de instalación.stdout_lines "
Cuándo: instalación_status.STDOUT_LINES está definido y la instalación_status.stdout_lines | Longitud> 0
- meta: end_play
Cuándo: instalación_status.STDOUT_LINES está definido y la instalación_status.stdout_lines | Longitud> 0
- Nombre: Crear directorio de destino si no existe
win_file:
ruta: "target_machine_path"
Estado: directorio
- Nombre: Descargue el instalador
win_get_url:
URL: "url_to_download_setup"
Dest: "target_machine_path"
Registrarse: descargar
Cuando: URL_TO_DOWNLOAD_SETUP está definido y URL_TO_DOWNLOAD_SETUP != ""
- set_fact:
paquete_name_zip: "descargar.Dest "
Cuando: descargar.fallido == falso
- Nombre: Descomprimir el paquete
win_unzip:
src: "paquete_name_zip"
Dest: "target_machine_path"
delete_archive: si
Registrarse: Decompress_status
Cuándo: (paquete_name_zip está definido) y (".zip "en paquete_name_zip o".gz "en paquete_name_zip o".GZ "en paquete_name_zip)
- Nombre: Buscar ubicación del archivo de configuración
win_find:
rutas: "target_machine_path"
Patrones: ["setup_name"]
Recurse: verdadero
Registrarse: resultado
- Nombre: Configuración de la ruta de configuración para el paquete Windows proporcionado
set_fact:
setup_path: "resultado.archivos [0].camino"
Cuándo: resultado.fallido == falso y resultado.emparejado> 0
- Nombre: Instalación de "setup_name"
win_package:
ruta: "setup_path"
Product_ID: Auto
Estado: presente
Argumentos: /Q
Registrarse: estado
- depurar:
msg: "setup_name instalado correctamente"
Cuándo: Estado.RC == 0
- set_fact:
reboot_required: verdadero
Cuándo: Estado.reboot_required se define y el estado.reinicio requerido
notificar:
- Reiniciar el servidor de Windows
En este documento, hemos realizado tareas como hemos recuperado el nombre del producto. Hemos hecho un directorio de destino si el directorio no está disponible. Tenemos que descargar la URL, sin comprometer el paquete, encontramos la ubicación de la configuración, y también hemos establecido la ubicación para el paquete de ventanas, etc.
win_package_install_role /default /main.YML:
Los parámetros predeterminados se definen dentro del directorio predeterminado. Los parámetros predeterminados son aquellos con el máximo significado, lo que los hace fáciles de modificar. El parámetro definido en valores predeterminados/principales.YML se utilizaría si no se define en ningún lado.
---
# El archivo predeterminado para Win_Package_Install_role
Target_machine_path: c: \ programafiles
win_package_install_role /var /main.YML:
Para especificar los parámetros requeridos para el rol, creamos un documento VAR en este paso. Para evitar cualquier disputa de título con parámetros de fuera del rol, es una opción inteligente que prefijamos los identificadores de los parámetros de rol.
# archivo vars para win_package_install_role
url_to_download_setup: https: // Archive.apache.org/dist/httpd/binaries/win32/httpd-2.2.25-win32-x86-no_ssl.MSI
Product_Name: Apache
setup_name: httpd-2.2.25-win32-x86-no_ssl.MSI
Target_machine_path: c: \ instaladores
win_package_install_role /manejadores /main.YML:
Los manejadores del Ansible se almacenarán dentro del directorio del manejador. Las tareas en el documento se conocen como manejadores que se pueden marcar a lo largo de una jugada para la ejecución después de que termine. Podríamos emplear manejadores según lo consideremos necesario.
# archivo de controladores para win_package_install_role
- Nombre: Reiniciar Windows Server
win_reboot:
Cuándo: reboot_required
win_package_install_role /meta /main.YML:
Una vez que decidimos transmitir el papel en Galaxy.ansible.com, utilizaremos el meta directorio para contener metadatos del autor. La información de rol de Ansible incluye el editor que es "Kalsoom", sistemas de apoyo y dependientes.
galaxy_info:
Autor: Kalsoom
Descripción: Instalar el paquete Windows proporcionado
Compañía: Ng Pvt Ltd
Licencia: Licencia (GPL-2.0-ORA, MIT, etc.)
min_ansible_version: "2.9 "
Plataformas:
- Nombre: Windows
Creando rol_main.YML Playbook:
En este libro de jugadas, pasaremos el nombre del papel que inicialmente creamos junto con el anfitrión. También recopilaremos la información relacionada con los anfitriones. El siguiente es el comando utilizado para crear el libro de jugadas en Ansible:
[root@maestro ansible]# nano role_main.YML
Todo:
Hospedadores:
Windows_host:
ansible_host: 192.168.5.220
ansible_user: ansible
ansible_password: ******
ansible_connection: winrm
Ansible_port: 5986
ansible_winrm_server_cert_validation: ignorar
Después de eso, ahora ejecutaremos la declaración para obtener la salida deseada en el terminal:
[root@master ansible]# ansible-playbook role_main.yml -i anfitrión.YML
Conclusión
El concepto de roles y cómo construir un papel en Ansible se cubrió en este artículo. La estructura jerárquica de los roles también se ha cubierto. Cada directorio que se almacenó bajo el papel se explicó en detalle. Para comprender cómo se usan los roles en Ansible, también hemos desarrollado un ejemplo.