Cómo crear un directorio en Ansible

Cómo crear un directorio en Ansible

Ansible es una de las mejores herramientas de automatización disponibles, que ofrece herramientas simples, intuitivas y poderosas para realizar tareas de automatización en el mundo moderno.

Para la mayoría de las tareas de automatización, deberá crear directorios, especialmente al instalar varias herramientas y aplicaciones, copias de seguridad y restaurar. Aunque puede realizar estas tareas utilizando un script automatizado, Ansible proporciona una mejor funcionalidad, lo que le permite crear directorios en hosts especificados.

Este tutorial le muestra cómo usar el módulo de archivo Ansible para crear, eliminar y modificar los permisos de directorio para hosts especificados.

Cómo crear un directorio en Ansible

Cualquiera de los siguientes métodos se puede usar para crear un directorio en Ansible:

  • Un comando ansible sin procesar con el módulo de comando
  • Un módulo de archivo en un libro de jugadas Ansible

Para crear un directorio en Ansible usando el módulo de comando, ingrese el comando que se muestra a continuación:

$ ansible All -M Command -A "Mkdir ~/Backups"

Después de ingresar el comando anterior, debe obtener la salida que se muestra a continuación:

Ingrese la frase de pass para la clave '/home/user/.ssh/id_rsa ':
[ADVERTENCIA]: Considere usar el módulo de archivo con State = Directorio en lugar de ejecutar 'Mkdir'. Si necesita usar el comando porque el archivo es insuficiente, puede agregar 'Warn: False' a esta tarea de comando o establecer 'command_warnings = false' en Ansible.CFG para deshacerse de este mensaje.
35.222.210.12 | Cambiado | RC = 0 >>

Verifique que sus hosts ansible inventario en/etc/ansible/hosts contengan la información correcta sobre sus hosts remotos.

Aunque el módulo de comando es fácil de usar en un solo host ansible, se vuelve muy ineficiente cuando se trata de múltiples hosts con diferentes directorios y tareas.

Para contrarrestar este inconveniente, usaremos el módulo de archivo Ansible y construiremos un libro de jugadas que contenga los hosts que queremos usar y los directorios que deseamos crear.

NOTA: El módulo de archivo también se puede usar como un solo comando en Ansible, pero funciona muy como el módulo de comando.

Para usar un libro de jugadas Ansible, cree un archivo YAML e ingrese las siguientes entradas para crear un directorio:

- Hosts: todas las tareas:
- Nombre: Ansible File Module Crear directorio
archivo:
Camino: ~/copias de seguridad
Estado: directorio

Guarde el archivo y use Ansible-Playbook para crear los directorios:

Ansible-Playbook Mkdir.YML

Esto debería producir una salida como la siguiente, lo que indica que las acciones se llevaron a cabo con éxito utilizando el archivo de libro de jugadas especificado.

Jugar todo] ********************************************** ************************************************************ ***************
Tarea [Reuniendo hechos] ********************************************** ************************************************************ **
Ingrese la frase de pass para la clave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarea [Ansible File Module Crear directorio] ****************************************************** ************************************
OK: [35.222.210.12]
Reproducir recapitulación *********************************************************************************************** ************************************************************ ***********
35.222.210.12: OK = 2 Cambiado = 0 inesperable = 0 fallido = 0 omitido = 0 rescatado = 0 ignorado = 0

Cómo crear múltiples directorios con elementos

Ansible Playbooks también le permiten crear múltiples directorios utilizando la instrucción With_Items en el archivo YAML.

Por ejemplo, para crear copias de seguridad para los tres servicios, MySQL, Repository y Config, puede crear la tarea que se muestra en el archivo YAML a continuación:

- Hosts: todas las tareas:
- Nombre: Ansible Cree múltiples directorios con_Items
archivo:
ruta: ~/copia de seguridad/item
Estado: directorio
with_items:
- 'mysql'
- 'repositorio'
- 'config'

Guarde el archivo anterior y ejecutarlo con Ansible-Playbook.

$ Ansible-Playbook mkdir_multi.YML Play [todos] **************************************************** ************************************************************ ************************************************************ ************************************************************ ***
Tarea [Reuniendo hechos] ********************************************** ************************************************************ ************************************************************ ******************************************
Ingrese la frase de pass para la clave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarea [Ansible Crear directorios múltiples con_items] ******************************************************** ************************************************************ ************************************************************ ***************
Cambiado: [35.222.210.12] => (item = mysql)
Cambiado: [35.222.210.12] => (item = Repository)
Cambiado: [35.222.210.12] => (elemento = config)
Reproducir recapitulación *********************************************************************************************** ************************************************************ ************************************************************ ************************************************************
35.222.210.12: OK = 2 cambiado = 1 inundable = 0 fallido = 0 omitido = 0 rescatado = 0 ignorado = 0

El libro de jugadas anterior debe crear múltiples directorios, como ~/backups/mysql, ~/backups/repository y ~/backups/config.

$ ls -la

La salida de la lista de directorio es como se muestra a continuación:

Total 0
DRWXRWXR-X. 5 Debian Debian 51 Mar 6 17:26 .
DRWX------. 6 Debian Debian 117 6 de marzo 17: 26 ..
DRWXRWXR-X. 2 Debian Debian 6 de marzo 6 17:26 Configuración
DRWXRWXR-X. 2 Debian Debian 6 de marzo 6 17:26 Mysql
DRWXRWXR-X. 2 Debian Debian 6 de marzo 6 17:26 Repositorio

Cómo establecer permisos para un directorio

Ansible le permite especificar permisos para un directorio utilizando la directiva de modo. Considere el siguiente libro de jugadas, que crea un directorio y establece permisos:

- Anfitriones: todos
tareas:
- Nombre: Ansible Crear directorio y establecer permisos
archivo:
ruta: /copias de seguridad
Estado: directorio
Modo: "u = rw, g = wx, o = rwx"
convertirse en: si

En la entrada anterior, creamos un directorio en /. También necesitábamos convertirnos en raíz, de ahí el convertido: sí, entrada.

$ Ansible-Playbook permiso.YML Play [todos] **************************************************** ************************************************************ ************************************************************ ************************************************************ ***
Tarea [Reuniendo hechos] ********************************************** ************************************************************ ************************************************************ ******************************************
Ingrese la frase de pass para la clave '/home/user/.ssh/id_rsa ':
OK: [35.222.210.12]
Tarea [Ansible Crear directorio y establecer permisos] ******************************************** ************************************************************ ************************************************************ ******************
Cambiado: [35.222.210.12]
Reproducir recapitulación *********************************************************************************************** ************************************************************ ************************************************************ ************************************************************
35.222.210.12: OK = 2 cambiado = 1 inundable = 0 fallido = 0 omitido = 0 rescatado = 0 ignorado = 0

Si ve los permisos del directorio que creamos, verá lo siguiente:

$ ls -lrt / | copias de seguridad de GREP

La salida es como se muestra a continuación:

DRW-WXRWX. 2 raíz raíz 6 marzo 6 17:36 copias de seguridad

Cómo cambiar de permiso recursivamente en un directorio

Para cambiar los permisos de un directorio y sus archivos de manera recursiva, simplemente especifique la entrada recursiva, como se muestra a continuación:

- Anfitriones: todos
tareas:
- Nombre: Ansible Crear directorio y establecer permisos
archivo:
ruta: /copias de seguridad
Estado: directorio
Modo: "u = rw, g = wx, o = rwx"
Recursivo: si
convertirse en: si

Cómo establecer permisos en múltiples directorios

Configurar permisos para múltiples directorios en Ansible también es tan simple como unas pocas líneas de entradas. Considere el siguiente libro de jugadas.

- Anfitriones: todos
tareas:
- Nombre: Ansible Crear directorio Mutliple con permisos
archivo:
ruta: "elemento.camino "
Modo: "elemento.modo"
Estado: directorio
with_items:
- ruta: '~/backups/mysql', modo: '0777'
- ruta: '~/backups/repository', modo: '0755'
- ruta: '~/backups/config', modo: '0707'

Cómo eliminar un directorio en Ansible

Para eliminar un directorio y todo su contenido utilizando un libro de jugadas Ansible, especifique el estado como ausente, como se muestra a continuación:

- Anfitriones: todos
tareas:
- Nombre: Directorio de eliminación ansible
archivo:
ruta: /copias de seguridad
Estado: ausente
convertirse en: si

Este comando eliminará el directorio y todos los archivos y directorios de los niños.

NOTA: Asegúrese de tener permisos para el directorio en el que está trabajando.

Cómo crear un directorio de marca de tiempo

En algunos casos, es posible que deba crear un directorio con una marca de tiempo adjunta, lo que puede ser muy útil, especialmente al crear copias de seguridad. Para crear un directorio de marca de tiempo, podemos usar la variable ANSIBLE_DATE_TIME.

Considere el siguiente libro de jugadas:

- Anfitriones: todos
tareas:
- Nombre: Ansible Agregar marca de tiempo al directorio
archivo:
ruta: "/copias de seguridad/mysql ansible_date_time.fecha"
Estado: directorio
Modo: "0777"
convertirse en: si

Una vez que ejecute el libro de jugadas, tendrá un directorio con la marca de tiempo.

$ ls -l

La lista de directorio debe ser como se muestra a continuación:

Total 0 DRWXRWXRWX. 2 raíz raíz 6 de marzo 6 18:03 mysql2021-03-06

NOTA: Para evitar errores, siempre verifique la sintaxis del archivo YAML que pretende usar en Ansible.

Conclusión

Este tutorial le mostró que trabajar con módulos Ansible es muy fácil e intuitivo, lo que hace que la automatización de tareas complejas sea más simple. Usando el módulo de archivo Ansible, puede crear uno o más directorios y agregar permisos para cada. También puede usar el mismo módulo para eliminar un directorio para obtener más información sobre cómo usar el módulo de archivo ansible, consulte la documentación oficial en la página de recursos.