Ansible

Cómo utilizar datos personalizados de Ansible

Cómo utilizar datos personalizados de Ansible
Los hechos son como variables en Ansible. Ansible genera muchos hechos, dependiendo del host que automatiza. Si lo necesita, también puede definir hechos / variables personalizados en Ansible.

Puede definir tres tipos de hechos personalizados en Ansible.

1) Hechos globales: Estos datos son accesibles desde todos los hosts de su archivo de inventario.
2) Datos del grupo: Solo se puede acceder a estos datos desde un conjunto específico de hosts o un grupo de hosts.
3) Datos del anfitrión: Estos hechos solo son accesibles desde un host en particular.

En este artículo, le mostraré cómo trabajar con hechos personalizados 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.

Configuración de un directorio de proyectos:

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

Para crear un directorio de proyecto hechos-personalizados / en tus CASA directorio, ejecute el siguiente comando:

$ mkdir -pv hechos-personalizados / playbooks, host_vars, group_vars

Ahora, navega hasta el hechos-personalizados / directorio de la siguiente manera:

$ cd hechos personalizados /

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

$ nano ansible.cfg

Escriba en las siguientes líneas su ansible.cfg expediente.

[valores predeterminados]
inventario = hosts
host_key_checking = Falso

Una vez que haya terminado, presione + X seguido por Y y para salvar el ansible.cfg archivo de configuración.

Ahora, cree un archivo de inventario de Ansible Hospedadores en el directorio de su proyecto de la siguiente manera:

$ nano hosts

Escriba las siguientes líneas en su Hospedadores archivo de inventario.

vm1.nodekite.com
vm2.nodekite.com
[web]
vm3.nodekite.com
vm4.nodekite.com
[base de datos]
vm [5: 6].nodekite.com

Una vez que haya terminado, presione + X seguido por Y y para salvar el Hospedadores archivo de inventario.

Para enumerar todos los hosts disponibles en su archivo de inventario, ejecute el siguiente comando:

$ ansible todos --list-hosts

Como puede ver, tengo seis hosts en mi archivo de inventario.

Para enumerar los hosts disponibles en el web grupo de su archivo de inventario, ejecute el siguiente comando:

$ ansible web --list-hosts

Como puede ver, tengo dos hosts (vm3.nodekite.com y vm4.nodekite.com) en el web grupo de mi archivo de inventario.

Para enumerar los hosts disponibles en el base de datos grupo de su archivo de inventario, ejecute el siguiente comando:

$ ansible database --list-hosts

Como puede ver, tengo dos hosts (vm5.nodekite.com y vm6.nodekite.com) en el base de datos grupo de mi archivo de inventario.

Trabajar con Ansible Global Facts:

En esta sección, le mostraré cómo definir hechos / variables globales de Ansible en su archivo de inventario y cómo acceder a ellos desde sus libros de jugadas de Ansible. También le mostraré cómo definir hechos / variables globales en un archivo separado.

Primero, abra el Hospedadores archivo de inventario con el siguiente comando:

$ nano hosts

Ahora, agregue las líneas marcadas en su Hospedadores archivo de inventario. Una vez que haya terminado, presione + X seguido por Y y para guardar el archivo.

'

Agrega hechos globales en el todos: vars sección. Aquí, he agregado el web_url hecho global.

Ahora, crea un nuevo libro de jugadas print_global_fact.yaml en el libros de jugadas / directorio de la siguiente manera:

$ nano playbooks / print_global_fact.yaml

Luego, escriba las siguientes líneas en el print_global_fact.yaml expediente.

- hosts: todos
usuario: ansible
Tareas:
- name: Imprime el valor del hecho global 'web_url'
depurar:
msg: 'URL web: web_url'

El propósito de este manual es imprimir el web_url hecho global.

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

Ahora, ejecute el print_global_fact.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_global_fact.yaml

Como puede ver, todos los hosts de mi archivo de inventario pueden acceder al hecho global web_url.

También puede agregar hechos globales en un archivo separado. De esta manera, puede mantener limpio el archivo de inventario. Veamos como hacerlo.

Primero, eliminemos los hechos globales del Hospedadores archivo de inventario.

$ nano hosts

Ahora, elimine las líneas marcadas del archivo de inventario y presione + X, seguido por Y y para guardar el archivo de inventario.

Luego, crea un nuevo archivo todas en el group_vars / directorio de la siguiente manera:

$ nano group_vars / all

Para agregar el hecho global web_url, escriba la siguiente línea en el group_vars / all expediente.

web_url: https: // www.linuxhint.com

Una vez que haya terminado, presione + X seguido por Y y para salvar el group_vars / all expediente.

Para comprobar si puede acceder al hecho global web_url, ejecutar el print_global_fact.yaml libro de jugadas de nuevo de la siguiente manera:

$ ansible-playbook playbooks / print_global_fact.yaml

Como puede ver, todos los hosts de mi archivo de inventario pueden acceder al hecho global web_url.

Trabajando con Ansible Group Facts:

En esta sección, le mostraré cómo definir hechos / variables de grupo de Ansible en su archivo de inventario y cómo acceder a ellos desde sus libros de jugadas de Ansible. También le mostraré cómo definir hechos / variables de grupo en un archivo separado.

Primero, abra el Hospedadores archivo de inventario con el siguiente comando:

$ nano hosts

Si tienes un grupo anfitrión grupo 1, luego agrega hechos / variables de grupo para ese grupo anfitrión en un grupo1: vars sección de su archivo de inventario.

[grupo 1]
..
[grupo1: vars]
variable1 = valor1
variable2 = valor2

Por ejemplo, para agregar los hechos / variables del grupo nombre de dominio y database_backends Para el web grupo de host, puede escribir las líneas marcadas en su archivo de inventario.

Una vez que haya terminado, presione + X seguido por Y y para guardar el archivo de inventario.

Para imprimir y probar si podemos acceder a los datos del grupo, cree un nuevo libro de jugadas print_group_facts.yaml en el libros de jugadas / directorio de la siguiente manera:

$ nano playbooks / print_group_facts.yaml

Escriba las siguientes líneas en su print_group_facts.yaml expediente.

- hosts: web
usuario: ansible
Tareas:
- nombre: Imprimir datos del grupo
depurar:
msg: 'Nombre de dominio: domain_name Base de datos de respaldo: database_backend'

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

Ahora, ejecute el print_group_facts.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_group_facts.yaml

Como puede ver, los hosts en el web el grupo puede acceder al nombre de dominio y database_backend agrupar hechos / variables.

Ahora, limpiemos el archivo de inventario y veamos cómo agregar datos / variables de grupo en un archivo separado.

Primero, abra el Hospedadores archivo de inventario de la siguiente manera:

$ nano hechos

Quite las líneas marcadas del Hospedadores archivo de inventario. Una vez que haya terminado, presione + X seguido por Y y para salvar el Hospedadores archivo de inventario.

Como estamos agregando variables de grupo para el web grupo de hosts, cree un nuevo archivo web (igual que el nombre del grupo) en el group_vars / directorio de la siguiente manera:

$ nano group_vars / web

Para agregar los hechos del grupo nombre de dominio y database_backend Para el web grupo de host, agregue las siguientes líneas en el group_vars / web expediente.

nombre_dominio: web.linuxhint.com
base de datos_backend: pgsql

Una vez que haya terminado, presione + X seguido por Y y para salvar el group_vars / web expediente.

Para comprobar si los hosts en el web grupo puede acceder a los datos del grupo, ejecutar el print_group_facts.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_group_facts.yaml

Como puede ver, los hosts en el web el grupo puede acceder al nombre de dominio y database_backend agrupar hechos / variables.

Trabajar con Ansible Host Facts:

En esta sección, le mostraré cómo definir hechos / variables del host de Ansible en su archivo de inventario y cómo acceder a ellos desde sus libros de jugadas de Ansible. También le mostraré cómo definir hechos / variables del host en un archivo separado.

Primero, abra el Hospedadores archivo de inventario con el siguiente comando:

$ nano hosts

Puede agregar datos / variables del host después del nombre DNS o la dirección IP del host en su archivo de inventario de la siguiente manera:

www.dominio1.com variable1 = valor1 variable2 = valor2
192.168.22.2 variable1 = valor3 variable2 = valor4

Por ejemplo, puede agregar hechos / variables del host nombre de dominio y database_backend para los anfitriones vm3.nodekite.com y vm4.nodekite.com, como se marca en la captura de pantalla a continuación.

Observe que el valor de la nombre de dominio y database_backend los hechos / variables son diferentes para cada host.

Una vez que haya terminado de agregar los hechos / variables del host, presione + X, seguido por Y y para salvar el Hospedadores archivo de inventario.

Como he agregado los mismos hechos / variables que en el ejemplo de grupo de hechos / variables, podemos usar el print_group_facts.yaml libro de jugadas para probar la accesibilidad de estos hechos / variables también.

Ejecutar el print_group_facts.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_group_facts.yaml

Como puede ver, los hechos / variables del host son accesibles para su host especificado. Los valores también son diferentes para cada host.

Como cada uno de los hosts está en una línea separada en mi archivo de inventario, podría agregar fácilmente hechos / variables de host en mi archivo de inventario. Pero, si usa rangos para definir hosts en su archivo de inventario como se marca en la captura de pantalla a continuación, no puede agregar hechos / variables de host como ese.

Puede agregar hechos / variables del host en un archivo separado, tal como lo ha hecho para los hechos / variables globales y grupales.

Para agregar hechos / variables de host para el vm5.nodekite.com host, crea un nuevo archivo vm5.nodekite.com (igual que el nombre DNS del host) en el host_vars / directorio de la siguiente manera:

$ nano host_vars / vm5.nodekite.com

Puede agregar los hechos / variables del host db_port y nombre_bd para el anfitrión vm5.nodekite.com con las siguientes líneas.

db_port: 3306
nombre_bd: demo1

Una vez que haya terminado, presione + X seguido por Y y para salvar el vm5.nodekite.com expediente.

De la misma manera, para agregar hechos / variables del host para el host vm6.nodekite.com, crear un nuevo archivo vm6.nodekite.com en el host_vars / directorio de la siguiente manera:

$ nano host_vars / vm6.nodekite.com

Puede agregar los hechos / variables del host db_port y nombre_bd para el anfitrión vm6.nodekite.com con las siguientes líneas.

db_port: 8877
nombre_bd: app1

Una vez que haya terminado, presione + X seguido por Y y para salvar el vm6.nodekite.com expediente.

Para imprimir y probar si podemos acceder a los hechos / variables del host, cree un nuevo libro de jugadas print_host_facts.yaml en el libros de jugadas / directorio de la siguiente manera:

$ nano playbooks / print_host_facts.yaml

Ahora, escriba las siguientes líneas en el print_host_facts.yaml expediente.

- hosts: base de datos
usuario: ansible
Tareas:
- nombre: Imprimir datos del host
depurar:
msg: 'Nombre de la base de datos: db_name Puerto de la base de datos: db_port'

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

Para comprobar si el anfitrión vm5.nodekite.com y vm6.nodekite.com puede acceder a los hechos / variables del host, ejecute el print_host_facts.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / print_host_facts.yaml

Como puede ver, los anfitriones vm5.nodekite.com y vm6.nodekite.com puede acceder al nombre_bd y db_port hechos / variables del anfitrión.

Poniéndolo todo junto: Precedencia de los hechos de Ansible

En esta sección, voy a hablar sobre la precedencia de hechos / variables de Ansible. Entonces empecemos.

Antes de comenzar, limpiemos el archivo de inventario.

Abre el Hospedadores archivo de inventario con el siguiente comando:

$ nano hosts

Eliminar la sección marcada del archivo de inventario.

Así es como debería verse su archivo de inventario en este momento.

Ahora, agregue la línea marcada en su archivo de inventario. Estas líneas agregan los hechos / variables globales fact_scope y Puerto.

Luego, agregue las líneas marcadas en su archivo de inventario. Estas líneas agregan el fact_scope y Puerto hechos / variables para los hosts en el base de datos grupo.

Finalmente, agregue el fact_scope y Puerto hechos / variables del host para el vm3.nodekite.com y vm4.nodekite.com hosts, como se marca en la captura de pantalla a continuación.

Una vez que haya terminado, presione + X seguido por Y y para guardar el archivo de inventario.

Para imprimir el valor de los hechos / variables globales, de grupo y de host, cree un nuevo manual de estrategias fact_precendence.yaml en el libros de jugadas / directorio de la siguiente manera:

$ nano playbooks / fact_precedence.yaml

Escriba las siguientes líneas en el precedencia_de_hechos.yaml expediente.

- hosts: todos
usuario: ansible
Tareas:
- nombre: Imprime todos los hechos
depurar:
msg: 'Alcance del hecho: fact_scope Puerto: puerto'

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

Para imprimir los hechos / variables globales, de grupo y de host, ejecute el precedencia_de_hechos.yaml libro de jugadas de la siguiente manera:

$ ansible-playbook playbooks / fact_precedence.yaml

Como puede ver, los hechos / variables globales, de grupo y de host se imprimen.

Observe que el grupo de hechos / variables reemplazó a los hechos / variables globales (1). Además, observe que los hechos / variables del host reemplazaron tanto al grupo como a los hechos / variables globales (2).

La precedencia de hechos / variables de Ansible es la siguiente:

Hecho de anfitrión> Hecho de grupo> Hecho global

Conclusión:

Después de leer este artículo, debería poder trabajar cómodamente con hechos / variables globales, grupales y de host de Ansible. Recuerde la precedencia de hechos personalizados de Ansible. Te ayudará a depurar tus libros de jugadas de Ansible más fácilmente.

El cursor salta o se mueve aleatoriamente mientras escribe en Windows 10
Si descubre que el cursor del mouse salta o se mueve por sí solo, automáticamente, de manera aleatoria mientras escribe en una computadora portátil o ...
Cómo invertir la dirección de desplazamiento del mouse y los paneles táctiles en Windows 10
Ratón y Panel táctils no solo facilitan la informática, sino que también hacen que sea más eficiente y requieran menos tiempo. No podemos imaginar una...
Cómo cambiar el tamaño, el color y el esquema del puntero del mouse y del cursor en Windows 10
El puntero y el cursor del mouse en Windows 10 son aspectos muy importantes del sistema operativo. Esto también se puede decir de otros sistemas opera...