Cómo construir un inventario Ansible en formato JSON

Cómo construir un inventario Ansible en formato JSON
Por defecto, un archivo de inventario ansible utiliza el formato de configuración INI. También puede usar el formato de configuración JSON (JavaScript Object Notation) para archivos de inventario Ansible también.

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

Prerrequisitos:

Si quieres probar los ejemplos de este artículo,

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

Hay muchos artículos sobre Linuxhint dedicados a instalar Ansible y configurar hosts para Automatización Ansible. Puede consultarlos si es necesario.

Creación de un directorio de proyecto:

En este artículo, voy a utilizar el código de Visual Studio para editar el archivo de configuración Ansible, el archivo de inventario y los libros de jugadas. Puedes usar cualquier editor o ide que quieras.

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

He creado un nuevo directorio de proyectos JSON-Inventory/ en mi HOGAR Directorio como puede ver en la captura de pantalla a continuación.

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

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

Ahora, seleccione el directorio del proyecto JSON-Inventory/ y haga clic en DE ACUERDO.

El directorio del proyecto debe abrirse con Código Visual Studio.

Ahora, haga clic en Archivo nuevo y crear un nuevo archivo ansible.CFG.

Luego, escriba las siguientes líneas en el ansible.CFG archivo.

[Valores predeterminados]
inventario = hosts.json
host_key_checking = falso

Una vez que haya terminado, presione + S Para salvar el ansible.CFG archivo.

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

Ahora, haga clic en Nueva carpeta y crear 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 todo sección.


"todo":

En todo Sección, agregas un anfitrión Sección y agregue sus hosts.


"todo":
"Hospedadores":
"host1": nulo,
"host2": nulo


Por ejemplo, puede agregar los hosts VM1.notekita.comunicarse y VM2.notekita.comunicarse en el Hospedadores.json archivo de inventario de la siguiente manera.


"todo":
"Hospedadores":
"VM1.notekita.com ": nulo,
"VM2.notekita.com ": nulo


Una vez que haya terminado, presione + S Para salvar el Hospedadores.json archivo.

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

$ ansible --lists-hosts todos

Como puede ver, los hosts que he agregado en mi archivo de inventario (VM1.notekita.comunicarse y VM2.notekita.comunicarse) están listados.

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

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

El grupo de host predeterminado en Ansible es todo. El todo grupo tiene todos los anfitriones de cada grupo (incluidos los anfitriones de todo grupo).

Agregas grupos de host en el niños Sección de su archivo de inventario JSON.


"todo":

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



Por ejemplo, para agregar los hosts VM3.notekita.comunicarse y VM4.notekita.comunicarse en el web grupo, y para agregar los hosts VM5.notekita.comunicarse y VM6.notekita.comunicarse en el db Grupo, escriba las siguientes líneas en su archivo de inventario JSON.


"todo":
"Hospedadores":
"VM1.notekita.com ": nulo,
"VM2.notekita.com ": nulo
,
"niños":
"Web":
"Hospedadores":
"VM3.notekita.com ": nulo,
"VM4.notekita.com ": nulo

,
"DB":
"Hospedadores":
"VM5.notekita.com ": nulo,
"VM6.notekita.com ": nulo




Una vez que haya terminado, presione + S Para salvar el Hospedadores.json archivo.

Aquí, las líneas marcadas agregan los hosts VM3.notekita.comunicarse y VM4.notekita.comunicarse en el web grupo.

Las líneas marcadas agregan los hosts VM5.notekita.comunicarse y VM6.notekita.comunicarse en el db grupo.

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

$ ansible --lists-hosts todos

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

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

$ ansible --list-hosts web

Como puede ver, todos los anfitriones en el web Se muestran el grupo.

De la misma manera, puede enumerar todos los hosts disponibles del db Grupo con el siguiente comando:

$ ansible --list-hosts db

Como puede ver, todos los anfitriones en el db Se muestran el grupo.

Agregar hechos globales en el archivo de inventario JSON:

En Ansible, las variables también se llaman hechos. Se puede acceder a los hechos globales o las variables globales desde cada anfitrión 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 en el interior todo Sección de su archivo de inventario JSON de la siguiente manera:


"todo":
"Hospedadores":

,
"Vars":
"Variable1": "Value1",
"Variable2": "Value2"
,
"niños":
"Web":

,
"DB":




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


"todo":
"Hospedadores":
"VM1.notekita.com ": nulo,
"VM2.notekita.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"índice": "índice.PHP "
,
"niños":
"Web":
"Hospedadores":
"VM3.notekita.com ": nulo,
"VM4.notekita.com ": nulo

,
"DB":
"Hospedadores":
"VM5.notekita.com ": nulo,
"VM6.notekita.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 libro de jugadas es imprimir los hechos/variables utilizando el depurar Módulo de Ansible. También nos ayudará a comprender la precedencia de hechos/variables más tarde.

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 archivo.

- Anfitriones: 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 archivo.

Para verificar 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 debe funcionar con éxito.

Desplácese de regreso al TAREA sección. Como puedes ver, el raíz web y índice Los hechos/variables se aplican a cada host en mi archivo de inventario JSON. Entonces, los hechos/variables globales están funcionando.

Agregar datos grupales 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 grupales en su archivo de inventario JSON.

Voy a agregar lo mismo raíz web y índice hechos en el web Grupo anfitrión de mi archivo de inventario JSON. El valor de estos hechos será diferente. Lo he hecho para que también puedas entender cómo funcionan los hechos/precedencia variable en Ansible.

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


"todo":
"Hospedadores":
"VM1.notekita.com ": nulo,
"VM2.notekita.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"índice": "índice.PHP "
,
"niños":
"Web":
"Hospedadores":
"VM3.notekita.com ": nulo,
"VM4.notekita.com ": nulo
,
"Vars":
"Webroot": "/web/public_html",
"índice": "índice.html "

,
"DB":
"Hospedadores":
"VM5.notekita.com ": nulo,
"VM6.notekita.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, el grupo hechos raíz web y índice están disponibles solo para los anfitriones VM3.notekita.comunicarse y VM4.notekita.comunicarse, los anfitriones en el web grupo.

Además, observe que el grupo hechos (raíz web y índice) reemplazaron los hechos globales (raíz web y índice). Por lo tanto, puede decir que los hechos grupales tienen mayor precedencia que los hechos globales.

Agregar datos de host en el archivo de inventario JSON:

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

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

Para agregar hechos de host, reemplazar nulo con sus hechos de host en el archivo de inventario JSON de la siguiente manera:

"Hospedadores":
"host1":
"var1": "valor1",
"Var2": "Value2",
,
"host2":
"Var2": "Value3",
"Var3": "Value4",

Por ejemplo, para agregar el índice Hecho de anfitrión al VM5.notekita.comunicarse host, reemplazar nulo con los hechos del host de la siguiente manera.


"todo":
"Hospedadores":
"VM1.notekita.com ": nulo,
"VM2.notekita.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"índice": "índice.PHP "
,
"niños":
"Web":
"Hospedadores":
"VM3.notekita.com ": nulo,
"VM4.notekita.com ": nulo
,
"Vars":
"Webroot": "/web/public_html",
"índice": "índice.html "

,
"DB":
"Hospedadores":
"VM5.notekita.com ":
"índice": "índice.py "
,
"VM6.notekita.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 puedes ver, el índice El hecho está disponible solo para el VM5.notekita.comunicarse anfitrión.

También observe que el hecho de anfitrión reemplazó el hecho global. Los hechos/variables del huésped tienen la mayor precedencia en Ansible. Entonces, 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 construir un archivo de inventario ansible en formato JSON. Le he mostrado cómo agregar hosts, agregar grupos de host, agregar datos globales, agregar datos grupales y agregar datos de host en su archivo de inventario en formato JSON.