Ansible

Cómo construir un inventario de Ansible en formato JSON

Cómo construir un inventario de Ansible en formato JSON
De forma predeterminada, un archivo de inventario de Ansible utiliza el formato de configuración INI. También puede usar el formato de configuración JSON (JavaScript Object Notation) para los archivos de inventario de Ansible.

En este artículo, le mostraré cómo utilizar el formato de configuración JSON para crear los archivos de inventario de Ansible. Entonces empecemos.

Requisitos previos:

Si quieres probar los ejemplos de este artículo,

1) Debes tener Ansible instalado en tu computadora.
2) Debe tener al menos 6 hosts Linux configurados para la automatización de Ansible.

Hay muchos artículos sobre LinuxHint dedicados a la instalación de Ansible y la configuración de hosts para la automatización de Ansible. Puede consultarlos si es necesario.

Crear un directorio de proyectos:

En este artículo, usaré el código de Visual Studio para editar el archivo de configuración de Ansible, el archivo de inventario y los libros de jugadas. Puede utilizar cualquier editor o IDE que desee.

Antes de comenzar, creemos un directorio de proyecto para que podamos organizar nuestros archivos de proyecto.

He creado un nuevo directorio de proyectos json-inventario / en mi CASA directorio como puede ver en la captura de pantalla a continuación.

Una vez que haya creado un nuevo directorio de proyecto, ábralo con su editor de texto favorito o IDE.

En Visual Studio Code, vaya a Archivo > Carpeta abierta… como se marca en la captura de pantalla a continuación.

Ahora, seleccione el directorio del proyecto json-inventario / y haga clic en OK.

El directorio del proyecto debe abrirse con Visual Studio Code.

Ahora, haga clic en Archivo nuevo  y crea un nuevo archivo ansible.cfg.

Luego, escriba las siguientes líneas en el ansible.cfg expediente.

[valores predeterminados]
inventario = hosts.json
host_key_checking = Falso

Una vez que haya terminado, presione + S para salvar el ansible.cfg expediente.

De la misma manera, cree un Hospedadores.json expediente. Este es el archivo de inventario JSON. Déjalo en blanco por ahora. Trabajaremos en eso más tarde.

Ahora, haga clic en Nueva carpeta  y crea un nuevo directorio libros de jugadas como se muestra en la captura de pantalla a continuación.

Agregar hosts al archivo de inventario JSON:

En esta sección, le mostraré cómo agregar hosts a su archivo de inventario en formato JSON.

En el Hospedadores.json archivo de inventario, agrega un todas sección.


"todas":

En todas sección, agrega una anfitrión sección y agregue sus hosts.


"todas":
"Hospedadores":
"host1": nulo,
"host2": nulo


Por ejemplo, puede agregar los hosts vm1.nodekite.com y vm2.nodekite.com en el Hospedadores.json archivo de inventario de la siguiente manera.


"todas":
"Hospedadores":
"vm1.nodekite.com ": nulo,
"vm2.nodekite.com ": nulo


Una vez que haya terminado, presione + S para salvar el Hospedadores.json expediente.

Puede verificar qué hosts están disponibles en su archivo de inventario con el siguiente comando:

$ ansible --list-hosts all

Como puede ver, los hosts que he agregado en mi archivo de inventario (vm1.nodekite.com y vm2.nodekite.com) están listados.

Agrupación de hosts en el archivo de inventario JSON:

En esta sección, le mostraré cómo agrupar hosts en su archivo de inventario JSON.

El grupo de host predeterminado en Ansible es todas. La todas grupo tiene todos los hosts de cada grupo (incluidos los hosts de todas grupo).

Agrega grupos de host en el niños sección de su archivo de inventario JSON.


"todas":
..
"niños":
"grupo 1":
,
"Grupo 2":



Por ejemplo, para agregar los hosts vm3.nodekite.com y vm4.nodekite.com en el web grupo, y para agregar los hosts vm5.nodekite.com y vm6.nodekite.com en el db grupo, escriba las siguientes líneas en su archivo de inventario JSON.


"todas":
"Hospedadores":
"vm1.nodekite.com ": nulo,
"vm2.nodekite.com ": nulo
,
"niños":
"web":
"Hospedadores":
"vm3.nodekite.com ": nulo,
"vm4.nodekite.com ": nulo

,
"db":
"Hospedadores":
"vm5.nodekite.com ": nulo,
"vm6.nodekite.com ": nulo




Una vez que haya terminado, presione + S para salvar el Hospedadores.json expediente.

Aquí, las líneas marcadas agregan los hosts vm3.nodekite.com y vm4.nodekite.com en el web grupo.

Las líneas marcadas agregan los hosts vm5.nodekite.com y vm6.nodekite.com en el db grupo.

Ahora, puede enumerar todos los hosts disponibles en su archivo de inventario JSON con el siguiente comando:

$ ansible --list-hosts all

Como puede ver, todos los hosts de cada grupo (web, db, y todas) son mostrados.

Para enumerar los hosts disponibles del web solo grupo, ejecute el siguiente comando:

$ ansible --list-hosts web

Como puede ver, todos los hosts del web se muestran el grupo.

Del mismo modo, puede enumerar todos los hosts disponibles de la db grupo con el siguiente comando:

$ ansible --list-hosts db

Como puede ver, todos los hosts del db se muestran el grupo.

Adición de hechos globales en el archivo de inventario JSON:

En Ansible, las variables también se denominan hechos. Los hechos globales o las variables globales son accesibles desde cada host de cada grupo en su archivo de inventario JSON. En esta sección, le mostraré cómo agregar hechos globales o variables globales en ansible.

Puede agregar hechos globales o variables globales en el vars sección interior todas sección de su archivo de inventario JSON de la siguiente manera:


"todas":
"Hospedadores":
..
,
"vars":
"variable1": "valor1",
"variable2": "valor2"
,
"niños":
"web":
..
,
"db":
..



Por ejemplo, puede agregar los hechos / variables globales webroot y índice en el vars sección de su archivo de inventario JSON de la siguiente manera:


"todas":
"Hospedadores":
"vm1.nodekite.com ": nulo,
"vm2.nodekite.com ": nulo
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"niños":
"web":
"Hospedadores":
"vm3.nodekite.com ": nulo,
"vm4.nodekite.com ": nulo

,
"db":
"Hospedadores":
"vm5.nodekite.com ": nulo,
"vm6.nodekite.com ": nulo




Una vez que haya terminado, presione + S para guardar el archivo de inventario JSON.

Para verificar si los hechos / variables globales están funcionando, voy a crear un nuevo libro de jugadas print_vars1.yaml. El propósito de este manual es imprimir los hechos / variables usando el depurar módulo de Ansible. También nos ayudará a comprender la precedencia de hechos / variables más adelante.

Entonces, crea un nuevo libro de jugadas print_vars1.yaml en tus libros de jugadas / directorio y escriba las siguientes líneas en su print_vars1.yaml expediente.

- hosts: todos
usuario: ansible
Tareas:
- nombre: Imprimir webroot e index
depurar:
msg: 'WebRoot webroot e índice index'

Una vez que haya terminado, presione + S para salvar el print_vars1.yaml expediente.

Para comprobar si los hechos / variables globales están funcionando, ejecute el print_vars1.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_vars1.yaml

El libro de jugadas debería ejecutarse correctamente.

Vuelve a la TAREA sección. Como puede ver, el webroot y índice los hechos / variables se aplican a cada host en mi archivo de inventario JSON. Entonces, los hechos / variables globales están funcionando.

Adición de datos de grupo en el archivo de inventario JSON:

También puede agregar hechos / variables para un grupo de host específico. En esta sección, le mostraré cómo agregar datos / variables de grupo en su archivo de inventario JSON.

Voy a agregar lo mismo webroot y índice hechos en el web grupo de host de mi archivo de inventario JSON. El valor de estos hechos será diferente. Lo he hecho para que también pueda comprender cómo funcionan los hechos / precedencia de variables en Ansible.

Para agregar los hechos webroot y índice en el web grupo anfitrión, agregue un vars sección en el web sección de su archivo de inventario JSON de la siguiente manera:


"todas":
"Hospedadores":
"vm1.nodekite.com ": nulo,
"vm2.nodekite.com ": nulo
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"niños":
"web":
"Hospedadores":
"vm3.nodekite.com ": nulo,
"vm4.nodekite.com ": nulo
,
"vars":
"webroot": "/ web / public_html",
"índice": "índice.html "

,
"db":
"Hospedadores":
"vm5.nodekite.com ": nulo,
"vm6.nodekite.com ": nulo




Una vez que haya terminado, presione + S para guardar el archivo de inventario JSON.

Para verificar los hechos, ejecute el print_vars1.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_vars1.yaml

Como puede ver, los datos del grupo webroot y índice están disponibles solo para los anfitriones vm3.nodekite.com y vm4.nodekite.com, los anfitriones en el web grupo.

Además, observe que los hechos del grupo (webroot y índice) reemplazó los hechos globales (webroot y índice). Entonces, puede decir que los hechos grupales tienen mayor precedencia que los hechos globales.

Adición de datos del host en el archivo de inventario JSON:

También puede agregar hechos / variables específicos del host en su archivo de inventario JSON. En esta sección, le mostraré cómo agregar hechos / variables específicos del host en su archivo de inventario JSON.

Para hechos globales o grupales, hemos mantenido el valor de los hosts nulo.

Para agregar hechos de host, reemplace nulo con los datos de su host en el archivo de inventario JSON de la siguiente manera:

"Hospedadores":
"host1":
"var1": "valor1",
"var2": "valor2",
,
"host2":
"var2": "valor3",
"var3": "valor4",

Por ejemplo, para agregar el índice hecho anfitrión a la vm5.nodekite.com hospedar, reemplazar nulo con los hechos del anfitrión de la siguiente manera.


"todas":
"Hospedadores":
"vm1.nodekite.com ": nulo,
"vm2.nodekite.com ": nulo
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"niños":
"web":
"Hospedadores":
"vm3.nodekite.com ": nulo,
"vm4.nodekite.com ": nulo
,
"vars":
"webroot": "/ web / public_html",
"índice": "índice.html "

,
"db":
"Hospedadores":
"vm5.nodekite.com ":
"índice": "índice.py "
,
"vm6.nodekite.com ": nulo




Una vez que haya terminado, presione + S para guardar el archivo de inventario JSON.

Para verificar los hechos disponibles, ejecute el print_vars1.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_vars1.yaml

Como puede ver, el índice hecho está disponible sólo para el vm5.nodekite.com anfitrión.

También observe que el hecho del anfitrión reemplazó al hecho global. Los hechos / variables del host tienen la mayor precedencia en Ansible. Por lo tanto, los hechos / variables del host reemplazarán los hechos / variables del grupo y los hechos / variables globales.

Conclusión:

En este artículo, le he mostrado cómo crear un archivo de inventario Ansible en formato JSON. Le he mostrado cómo agregar hosts, agregar grupos de hosts, agregar hechos globales, agregar hechos de grupo y agregar hechos de host en su archivo de inventario en formato JSON.

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...
Controle y administre el movimiento del mouse entre múltiples monitores en Windows 10
Administrador de mouse de doble pantalla le permite controlar y configurar el movimiento del mouse entre varios monitores, al ralentizar sus movimient...