Hay momentos en que es posible que necesitemos copiar múltiples archivos de un dispositivo a otro. Ansible también proporciona varios módulos para este. Estos módulos nos permiten copiar múltiples archivos al mismo tiempo y enviarlos a través de dispositivos remotos. Eso nos lleva al tema de este artículo: el módulo de copia ansible, que implementaremos en esta guía.
Copiar múltiples archivos
En caso de que queramos transferir múltiples archivos, necesitamos hacer un libro de jugadas con numerosas tareas para cada copia. Si bien esto puede resolver el problema, no es muy eficiente en el tiempo y puede ser bastante tedioso. En consecuencia, tendríamos un gran libro de jugadas con más posibilidades de errores humanos. También sería más difícil depurar. Afortunadamente, podemos usar varios otros enfoques para resolver este problema que son mucho más convenientes y guardar nuestros recursos.
Usando bucles
En general, Ansible es una herramienta de automatización simple que no requiere conocimiento de programación de pleno derecho. Sin embargo, si tiene el conocimiento básico de cómo funciona un código fuente, puede ser realmente útil en Ansible y darle una visión más profunda para resolver varios problemas que encuentra de vez en cuando.
Un bucle en la programación de computadoras es un conjunto de instrucciones que le indica al sistema que repita un cierto conjunto de comandos durante una cantidad especificada de veces o hasta que se cumpla una determinada condición.
Ejemplos
-Nombre: Copie todos los archivos en myconf/
Copiar:
src: elementos
Dest:/etc/myapp/
Propietario: raíz
Grupo: raíz
Modo: U = RW, G = RW, O = R
With_fileGlob:
-"Myconf /*"
Ejecute el libro de jugadas usando este comando en el terminal de Linux.
Ansible-Playbook Testbook.YML
El script anterior copia "myconf/" junto con todo su contenido al directorio de destino/etc/myapp/en el host remoto. El comando de copia se emite para la transferencia de contenido copiado. With_fileGlob es el bucle que se ejecuta hasta que los archivos se copian por completo al host remoto.
Este enfoque funciona cuando hay múltiples archivos que se transferirán al mismo directorio.
Copia del directorio
Este es otro enfoque para enviar copias de archivo al host remoto. Aquí, copiamos todo el directorio que contiene los archivos que necesitamos transferir y enviarlo al nodo remoto. Puede llevar un poco de tiempo, ya que uno debe mover primero todos los archivos a un directorio determinado y luego copiar el directorio por completo. Un ejemplo demuestra esto.
-Nombre: Copia del directorio al dispositivo remoto
Copiar:
SRC: MyConfig/
Dest: etc/mifolder
Propietario: raíz
Grupo: raíz
Modo: U = RW, G = RW, O = R
El script anterior copia el directorio myconfig/a un dispositivo remoto con destino/etc/myfolder. Es una transferencia entre directorio. El segmento de "modo" simplemente asegura que los objetos del sistema de archivos se creen con los permisos correctos. Estos modos se pueden ver en la página principal del módulo en "Copiar parámetros del módulo".
Copiar archivos a múltiples destinos remotos
Para una mayor eficiencia en los archivos múltiples de copia, podemos usar un bucle para enviar archivos a múltiples destinos por completo. Usemos el mecanismo de bucle para enviar 4 utilidades al host remoto de una vez.
-Nombre: Copiar múltiples archivos a múltiples destinos
Copiar:
src: item.src
Dest: item.Dest
Propietario: raíz
Grupo: raíz
Modo: U = RW, G = RW, O = R
con ítems:
-src: setup1.conf, des:/etc/setup1f/
-src: setup2.conf, des:/etc/setup2f/
-src: setup3.conf, des:/etc/setup3f/
-src: setup4.conf, des:/etc/setup4f/
El código anterior copia los archivos de configuración de 4 utilidades desde el propietario de la raíz al host remoto en el directorio /etc /configuración. El objeto.SRC "indica que se copian más de 1 elemento de la máquina de destino.
Copiar archivos de un destino a otro en el host remoto
Con Ansible, también podemos copiar archivos de un destino a otro en el host remoto. Si bien este procedimiento es válido para archivos, no funciona para directorios. A continuación se muestra un pequeño script que transfiere un archivo de prueba desde la carpeta1 a la carpeta2.
-Nombre: transferencia de archivo en host remoto
Copiar:
src: $ home/carpeter1/test_file
Remote_src: verdadero
Dest: $ home/carpeta2/test_file
Cree un archivo de copia de seguridad en el host remoto antes de copiar
Hay momentos en los que podemos copiar otro archivo por error. Un remedio para evitar tales problemas es crear un archivo de copia de seguridad en el servidor remoto.
El módulo de copia ansible viene con un parámetro "copia de seguridad" para contrarrestar solo eso. En caso de que haya un archivo remoto y no sea lo mismo que el archivo copiado, se creará un nuevo archivo. La diferencia es que el nuevo archivo se agregará con la marca de tiempo actual y el nombre del archivo original. Por defecto, el parámetro de copia de seguridad tiene su valor establecido como 'no'.
Por ejemplo, el siguiente script crea una copia de seguridad de "MyScript.txt ”en el directorio /ABC del host remoto. Se nombrará algo como 'myScript.TXT.8565.2022-03-17@20: 51: 18 '.
- Hosts: bloques
tareas:
- Nombre: Ejemplo de copia de seguridad del archivo de copia ansible
Copiar:
src: ~/myscript.TXT
Dest: /ABC
copia de seguridad: si
Conclusión
En este artículo, repasamos el módulo de copia y sus parámetros. Vimos cómo podríamos usar múltiples enfoques para transferir múltiples archivos del local al host remoto y también manipular ciertos aspectos como cambiar el directorio de los archivos copiados de forma remota o transferir múltiples archivos a múltiples destinos.
Eso fue todo para el módulo de copia en Ansible junto con los procedimientos de copia para múltiples archivos en todos los dispositivos. Con suerte, cualquier confusión que tuviera con respecto al mecanismo de copia ansible se borra después de pasar por este artículo.