Ansible

Cómo utilizar el módulo de registro de Ansible

Cómo utilizar el módulo de registro de Ansible
En Ansible, puede ejecutar cualquier comando de shell en sus hosts de Ansible, los hosts que configurará con Ansible. Estos comandos de shell pueden tener salidas. De forma predeterminada, la salida se ignora. Si desea almacenar la salida en una variable y usarla más tarde, puede usar Ansible Registrarse módulo. Este artículo le mostrará cómo utilizar Ansible Registrarse módulo para almacenar la salida del comando en una variable y acceder a ella más tarde en su libro de jugadas de Ansible.

Prerrequisitos

Si desea probar los ejemplos de este artículo, debe:

1) Tener Ansible instalado en su computadora.

2) Tener un host de Ubuntu configurado para la automatización de Ansible.

Hay muchos artículos sobre LinuxHint dedicados a instalar Ansible y configurar hosts para la automatización de Ansible. Puede consultar estos artículos si es necesario.

Configurar un directorio de proyectos

Antes de continuar, configure un nuevo directorio de proyectos de Ansible, solo para mantener las cosas un poco organizadas.

Para crear el directorio del proyecto registrar-demo / y todos los subdirectorios necesarios (en su directorio de trabajo actual), ejecute el siguiente comando:

$ mkdir -pv register-demo / playbooks

Una vez que se crea el directorio del proyecto, navegue hasta el directorio del proyecto, de la siguiente manera:

$ cd register-demo /

Crear un Hospedadores archivo de inventario, de la siguiente manera:

$ nano hosts

Agregue la IP de host o el nombre DNS de su host de Ubuntu en el archivo de inventario (un host por línea), como se muestra en la captura de pantalla a continuación.

Aquí, he agregado mi Ubuntu 20.04 anfitrión LTS vm3.nodekite.com en el ubuntu20 grupo.

Una vez que haya terminado, guarde el archivo presionando + X, seguido por Y y .

Cree un archivo de configuración de Ansible ansible.cfg en el directorio de su proyecto, de la siguiente manera:

$ nano ansible.cfg

A continuación, escriba las siguientes líneas en el ansible.cfg expediente:

[valores predeterminados]
inventario = hosts
host_key_checking = Falso

Una vez que haya terminado, guarde el ansible.cfg archivo presionando + X, seguido por Y y .

Ahora, intente hacer ping a su host de Ubuntu, de la siguiente manera:

$ ansible ubuntu20 -u ansible -m ping

Como puede ver, mi Ubuntu 20.04 anfitrión vm3.nodekite.com es accesible.

Ejemplo 1: Conceptos básicos

En este ejemplo, te mostraré algunos de los conceptos básicos de Ansible Registrarse módulo. Usaré Ansible para generar una contraseña aleatoria en mi Ubuntu 20.04 host usando el pwgen comando, almacene la contraseña en una variable usando el Registrarse módulo e imprima la contraseña en la pantalla.

Primero, crea el nuevo libro de jugadas generate_pass.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / generate_pass.yaml

Escriba las siguientes líneas en el generate_pass.yaml expediente:

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: asegúrese de que pwgen esté instalado
apto:
nombre: pwgen
estado: presente
update_cache: Verdadero
- nombre: Generar contraseña
carcasa: pwgen -N 1 -s 30
registrarse: mypass
- nombre: Imprime la contraseña generada
depurar:
msg: "La contraseña es mypass"

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el generate_pass.yaml expediente.

La siguiente línea le dice a Ansible que ejecute el libro de jugadas generate_pass.yaml en cada host en el ubuntu20 grupo. En mi caso, el libro de jugadas se ejecutará en el host vm3.nodekite.com.

En este libro de jugadas, definiré tres tareas.

La primera tarea asegurará que el pwgen el paquete está instalado.

La segunda tarea generará una contraseña aleatoria de 30 caracteres utilizando el pwgen mando. Usaré el Registrarse módulo para almacenar la contraseña generada en el mi pase variable.

La tercera tarea imprimirá el mi pase variable usando el Ansible depurar módulo.

Ejecuta el libro de jugadas generate_pass.yaml usando el siguiente comando:

$ ansible-playbook playbooks / generate_pass.yaml

Como puede ver, el libro de jugadas se ejecutó correctamente. También se ha generado una contraseña.

Pero, ¿por qué la variable mi pase imprimir tantos artículos?

Bueno, la variable mi pase es un objeto que contiene algunas propiedades importantes.

Las propiedades más importantes de cada una de las Registrarse las variables son las siguientes:

cmd - El comando que se ejecutó para generar la salida.

stdout - La salida del comando.

stderr - La salida de error del comando.

comienzo - La fecha y hora en que el comando comenzó a ejecutarse.

final - La fecha y hora en que el comando terminó de ejecutarse.

delta - El tiempo necesario para ejecutar el comando. Esta es la diferencia entre final y el comienzo propiedades.

stdout_lines - Una matriz que contiene cada línea de salida del comando. Igual que stdout, pero stdout separa las líneas usando caracteres de nueva línea (\ n) en lugar de matrices.

stderr_lines -  Una matriz que contiene cada línea de salida de error del comando. Igual que stderr, pero stderr separa las líneas usando caracteres de líneas nuevas (\ n) en lugar de matrices.

Si solo desea imprimir / acceder a la cadena de contraseña (lo cual es muy probable), puede imprimir / acceder a la stdout propiedad de la mi pase variable en su libro de jugadas, como se marca en la captura de pantalla a continuación.

$ nano playbooks / generate_pass.yaml

Una vez que haya terminado, ejecute el libro de jugadas generate_pass.yaml de nuevo. Solo se imprimirá la cadena de contraseña, como puede ver en la captura de pantalla a continuación.

Que cubre los conceptos básicos de Ansible Registrarse módulo.

Ejemplo 2: contenido del directorio de tiendas

En este ejemplo, le mostraré cómo almacenar el contenido de un directorio en una variable usando Ansible Registrarse módulo, así como cómo iterar sobre ellos.

Primero, crea el nuevo libro de jugadas get_dir_contents.yaml en el libros de jugadas / directorio.

$ nano playbooks / get_dir_contents.yaml

A continuación, escriba las siguientes líneas en el get_dir_contents.yaml libro de jugadas:

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: lista todos los archivos y directorios en / home / ansible
shell: ls / home / ansible
registrarse: dir_contents
- name: Imprime el contenido del directorio usando bucles
depurar:
msg: "item"
bucle: "dir_contents.stdout_lines "

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el generate_pass.yaml expediente.

En este libro de jugadas, definiré dos tareas.

La primera tarea enumera todos los contenidos de la / inicio / ansible directorio y los almacena en el dir_contents variable.

La segunda tarea imprime el dir_contents variable.

Ejecutar el get_dir_contents.yaml libro de jugadas, de la siguiente manera.

$ ansible-playbook playbooks / get_dir_contents.yaml

Como puede ver, el stdout_lines la propiedad almacenó el contenido del directorio como una matriz. La stdout La propiedad también se almacena en el contenido del directorio. Estas propiedades están separadas por caracteres de nueva línea (\ n). En este ejemplo, el stdout_lines la propiedad es fácil de trabajar.

Luego, itera sobre el contenido del directorio usando un bucle.

Para hacer esto, abra el get_dir_contents.yaml libro de jugadas y cambie la segunda tarea, como se marca en la captura de pantalla a continuación.

$ nano playbooks / get_dir_contents.yaml

Aquí, estoy iterando sobre el dir_contents.stdout_lines matriz usando un bucle e imprimiendo los elementos de la matriz usando Ansible depurar módulo. En esta tarea, el Articulo variable es una variable de bucle que se utiliza para iterar sobre los elementos de la matriz.

Ejecutar el get_dir_contents.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / get_dir_contents.yaml

Como puede ver, el contenido del / inicio / ansible directorio están impresos en la pantalla.

Ejemplo 3: copia de seguridad del directorio

En este ejemplo, le mostraré cómo hacer una copia de seguridad de un directorio usando Ansible Registrarse, expediente, y Copiar módulos.

Primero, crea el nuevo libro de jugadas backup_home_dir.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / backup_home_dir.yaml

A continuación, escriba las siguientes líneas en el backup_home_dir.yaml expediente.

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: Obtener el directorio de inicio / inicio / contenido ansible
shell: ls / home / ansible
registrarse: dir_contents
- nombre: crea un nuevo directorio / tmp / ansible
expediente:
ruta: / tmp / ansible
estado: directorio
- nombre: Copia de seguridad del directorio de inicio / home / ansible en / tmp / ansible
Copiar:
src: / home / ansible / item
dest: / tmp / ansible /
remote_src: Verdadero
bucle: "dir_contents.stdout_lines

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el backup_home_dir.yaml expediente.

En este libro de jugadas, definiré tres tareas.

La primera tarea almacena el contenido del / inicio / ansible directorio (el directorio del que haré una copia de seguridad) en el dir_contents variable usando el Ansible Registrarse módulo.

La segunda tarea crea un nuevo directorio / tmp / ansible usando el Ansible expediente módulo. Este es el directorio donde se almacenará la copia de seguridad.

La tercera tarea recorre el dir_contents.stdout_lines matriz y utiliza el Ansible Copiar módulo para copiar cada directorio al / tmp / ansible / directorio.

Ejecutar el backup_home_dir.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / backup_home_dir.yaml

Como puede ver, en mi Ubuntu 20.04 host LTS, la copia de seguridad se realizó correctamente.

Ejemplo 4: ejecutar u omitir tareas

En este ejemplo, le mostraré cómo ejecutar u omitir tareas, según la variable que haya registrado, utilizando el Registrarse módulo.

Primero, crea el nuevo libro de jugadas condiciones_registro.yaml en el libros de jugadas / directorio de la siguiente manera:

$ nano playbooks / register_conditions.yaml

A continuación, escriba las siguientes líneas en el condiciones_registro.yaml expediente.

- hosts: ubuntu20
usuario: ansible
hecho realidad
Tareas:
- nombre: lista del contenido del directorio
shell: ls / home / ansible / test3
registrarse: dir_contents
- nombre: compruebe si el directorio está vacío
depurar:
msg: "El directorio está vacío."
cuando: dir_contents.stdout == ""

Una vez que haya terminado, presione + X, seguido por Y y , para salvar el condiciones_registro.yaml expediente.

En este libro de jugadas, he definido dos tareas.

La primera tarea almacena el contenido del / home / ansible / test3 directorio en el dir_contents variable.

La segunda tarea comprueba si dir_contents.stdout es una cadena vacía, o si el directorio / home / ansible / test3 esta vacio. Si el directorio está vacío, el mensaje El directorio está vacío imprimirá.

Ejecutar el condiciones_registro.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / register_conditions.yaml

Como puede ver, el libro de jugadas se ejecutó correctamente.

Desde el directorio / home / ansible / test3 está vacío, el libro de jugadas imprimió el mensaje El directorio está vacío.

A continuación, cree un nuevo archivo en el / home / ansible / test3 directorio.

$ touch test3 / myfile

Desde el / home / ansible / test3 el directorio ya no está vacío, la tarea Compruebe si el directorio está vacío se omite, como puede ver en la captura de pantalla siguiente.

$ ansible-playbook playbooks / register_conditions.yaml

Conclusión

El Ansible Registrarse El módulo es muy útil para la automatización de servidores. Este artículo le mostró los conceptos básicos de Registrarse módulo, incluidos ejemplos del uso de Ansible Registrarse módulo para almacenamiento y copia de seguridad de directorios, y para ejecutar tareas de directorio.

Cómo cambiar los botones izquierdo y derecho del mouse en una PC con Windows 10
Es una norma que todos los dispositivos de mouse de computadora estén diseñados ergonómicamente para usuarios diestros. Pero hay dispositivos de mouse...
Emule los clics del mouse colocando el mouse con Clickless Mouse en Windows 10
El uso excesivo de un mouse o teclado en una postura incorrecta puede provocar muchos problemas de salud, como tensión, síndrome del túnel carpiano y ...
Agregue gestos del mouse a Windows 10 con estas herramientas gratuitas
En los últimos años, las computadoras y los sistemas operativos han evolucionado enormemente. Hubo un momento en que los usuarios tenían que usar coma...