
El archivado tiene sus beneficios, el mayor de los cuales es su facilidad de portabilidad. Le permite agrupar archivos de diferentes tipos y comprimirlos en un solo archivo .zip/tar portátil que se puede descomprimir para recuperar los archivos originales más tarde.
Ansible también proporciona opciones de archivo con la ayuda del módulo ansible.builtin.unarchive. Este módulo tiene las opciones disponibles para descomprimir, así como algunas opciones para copiar archivos antes de extraerlos.
Esta guía tiene como objetivo ayudarlo a aprender cómo usar el módulo Unarchive en Ansible. Repasaremos los conceptos básicos del módulo Unarchive, algunos parámetros comunes y ejemplos de su implementación.
Dicho esto, comencemos.
Requisitos para Desarchivar en Ansible
A continuación se encuentran los requisitos para que el módulo Ansible Unarchive funcione correctamente en su sistema.
- Un sistema con Ansible preinstalado. Le recomendamos que utilice una distribución de Linux.
- Hosts remotos, ya sean sistemas independientes o máquinas virtuales. Software como Oracle VirtualBox, Vagrant y VMware Workstations son perfectos para el trabajo.
- Los comandos zipinfo, gtar y unzip deben instalarse en el host.
También le recomendamos que tenga conocimientos básicos sobre la ejecución de comandos en la terminal.
Limitaciones de Unarchive en Ansible
Si bien el módulo Unarchive funciona bien con archivos .tar y .zip, no se puede usar con archivos .gz, .bz2, .xz. Los archivos deben contener un archivo .tar para que el módulo funcione. Para los archivos que usan gtar, asegúrese de que se admita el argumento -diff.
La siguiente sección de esta guía cubre los parámetros del módulo Unarchive.
Parámetros del módulo Ansible Unarchive
El módulo Ansible Unarchive tiene su propia lista de parámetros que amplían la funcionalidad del módulo general.
A continuación se muestra una lista de módulos importantes.
- «Atributos»: rigen los atributos de un objeto de sistema de archivos en particular.
- «Copiar»: esta función ofrece dos opciones, sí o no. Si la opción seleccionada es sí, el archivo se copiará desde el dispositivo local al host remoto.
- «crea»: se usa para crear una ruta/directorio.
- «excluir»: le permite excluir archivos y directorios específicos de la extracción.
- «Grupo»: identifica un grupo al que pertenece el objeto del sistema de archivos.
- «incluir»: incluye archivos y directorios que desea extraer.
- «modo» – Controla los permisos del sistema de archivos.
- «Propietario»: significa un usuario como propietario de un objeto del sistema de archivos
Aparte de los parámetros anteriores, hay varias opciones disponibles con el módulo Ansible Unarchive. Para obtener más detalles sobre los parámetros, consulte la documentación oficial del módulo Ansible Unarchive en línea.
La siguiente sección de esta guía cubrirá algunos ejemplos del uso de desarchivar en Ansible.
Uso de Unarchive para extraer un archivo a un directorio específico
El siguiente ejemplo muestra cómo extraer un archivo .tgz (llamado archive.tgz) a una ruta específica.
– nombre: Extraiga archive.tgz a /var/lib/archive
ansible.construido.unarchive:
Fuente: Archivo.tgz
Destino: /var/lib/archivo
Ahora ejecute este comando en la terminal de Linux para ejecutar un libro de jugadas.
ansible-playbook testbook.yml
«src» designa el archivo a extraer, mientras que «dest:» especifica la ruta.
Veremos más ejemplos para entender cómo usar mejor el módulo Unarchive.
Desarchivar un archivo disponible en el host remoto
El siguiente ejemplo ilustra cómo puede extraer un archivo que ya existe en el host o la máquina remota.
– nombre: Extrae un archivo que ya existe en el sistema remoto.
ansible.construido.unarchive:
Fuente: /tmp/archive.zip
Destino: /usr/local/bin
remoto_src: sí
El código anterior extrae el archivo archive.zip en /usr/local/bin.
Uso del módulo Unarchive para extraer un archivo que está en línea
Esta fue una característica agregada en la versión 2.0 de Ansible. Le permite extraer un archivo disponible en línea que aún no se ha descargado al sistema.
El siguiente ejemplo ilustra cómo puede lograr esto.
– Nombre: extraiga un archivo que aún no se haya descargado en su sistema
ansible.construido.unarchive:
Fuente: https:///.zip
Destino: /usr/local/bin
remoto_src: sí
El bloque de código anterior extrae el archivo a la ruta de destino /usr/local/bin.
La diferencia en el código del libro de jugadas con y sin Unarchive
El siguiente ejemplo se proporciona para ayudarlo a identificar la diferencia entre el código que usa el módulo de comando Unarchive.
Comenzaremos viendo cómo escribir el código para copiar y desarchivar archivos. Usamos el módulo de copia junto con el comando tar -xvf para extraer.
– Nombre: copia un archivo específico y extrae su contenido
anfitriones: test_servers
variable:
– ID de usuario: «LinuxUser1»
– oracle_home: «/opt/oracle»
– jdk_instl_file: «server-linux.tar.gz» (nombre del archivo .tar.gz).
Tareas:
– nombre: copia el contenido de los archivos JDK
convertirse en: si
were_user: «{{ ID de usuario }}»
Etiquetas: aplicación, cpbinarios
Dupdo:
Fuente: «{{ artículo }}»
Destino: «{{ oracle_home }}»
Modo: 0755
con_elementos:
– «{{ jdk_instl_file }}»
– Nombre: Instalar Java
convertirse en: si
were_user: «{{ ID de usuario }}»
Palabra clave: javainstall
Shell: «tar xvfz {{ oracle_home }}/{{ jdk_instl_file }}»
argumentos:
chdir: «{{ oracle_home }}»
registro: javainstall
Las mismas tareas se pueden realizar mucho más fácilmente usando el módulo Unarchive como se muestra a continuación.
– Nombre: copia un archivo específico y extrae su contenido
anfitriones: test_servers
variable:
– ID de usuario: «LinuxUser1»
– oracle_home: «/opt/oracle»
– jdk_instl_file: «servidor-linux.tar.gz»
Tareas:
– nombre: Copie e instale contenido JDK y Java
convertirse en: si
were_user: «{{ ID de usuario }}»
Palabra clave: javainstall
desarchivar:
Fuente: «{{ artículo }}»
Destino: «{{ oracle_home }}»
Modo: 0755
con_elementos:
– «{{ jdk_instl_file }}»
Tenga en cuenta que la cantidad de líneas de código ha disminuido significativamente en comparación con el método que no usa el módulo de desarchivado. Al usar el módulo de desarchivar, pudimos fusionar la tarea de copiar y desarchivar en una sola.
Conclusión
Esperamos que esta guía le haya ayudado a aprender a usar el módulo Unarchive en Ansible. Hemos cubierto los conceptos básicos del módulo junto con las limitaciones, los requisitos previos y los parámetros. También revisamos algunos ejemplos para mejorar nuestra comprensión. Con eso en mente, le deseamos mucho éxito en aprender a usar Ansible.