GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo administrar el inventario de hosts estáticos y dinámicos de Ansible

Como sabemos que Ansible es la herramienta de automatización más poderosa que puede configurar los hosts a gusto. El principal beneficio de usar Ansible como herramienta de automatización es que no tenemos que instalar ningún agente en los hosts. La comunicación entre el servidor de Ansible y sus clientes o hosts administrados no tiene agentes, funciona a través del mecanismo ssh.

En términos de la terminología de Ansible, el sistema en el que instalamos el software de Ansible se denomina "Nodo de control ” y los servidores administrados y configurados por el servidor Ansible o el nodo de control se conocen como “host administrado “. Las entradas de hosts administrados se almacenan en un archivo de inventario de host, es un archivo de texto en el nodo de control que consta de nombre de host administrado o direcciones IP. En Ansible, podemos administrar dos tipos de inventario de hosts, es decir, estáticosdinámico .

En este artículo, analizaremos cómo administrar el inventario de hosts estáticos y dinámicos en Ansible. Supongo que el software Ansible ya está instalado en mi nodo de control. Cada vez que instalamos el software ansible, se crea un archivo de host ansible predeterminado con el nombre “hosts ” en la carpeta “/etc/ansible ” En caso de que el software Ansible no esté instalado en su servidor, consulte lo siguiente

  • Cómo instalar Ansible (herramienta de automatización) en CentOS 8/RHEL 8
  • Cómo instalar la herramienta Ansible Automation en CentOS 7.x

En este tutorial usaré lo siguiente:

Un nodo de control –   nodo-control.ejemplo.com (192.168.0.10)

Dos hosts gestionados – servidora.ejemplo.com (192.168.0.20) y servidorb.ejemplo.com (192.168.0.30)

Inventario de hosts estáticos

Un inventario de host estático en Ansible es un tipo INI archivo de texto, en cuya sección cada uno declara un grupo de hosts (grupo de host). Cada sección comienza con un nombre de grupo de host entre corchetes ([]), luego se enumeran las entradas de host de cada host administrado en el grupo, cada una en una sola línea. Las entradas de host pueden albergar nombres o direcciones IP de hosts administrados. Vamos a crear un archivo de inventario con el nombre "inventario" en la carpeta "test-lab" en el directorio de inicio de su usuario.

[[email protected] ~]$ mkdir test-lab
[[email protected] ~]$ cd test-lab/
[[email protected] test-lab]$ vi inventory
control-node.example.com
192.168.0.10

[webserver]
servera.example.com

[dbserver]
serverb.example.com

[datacenter:children]
webserver
dbserver

Guarde y salga del archivo.

En el archivo de inventario, he creado dos grupos de hosts con el nombre webserver y dbserver, aparte de esto, hemos creado un grupo más con el nombre datacenter que incluye grupos de grupos de host. Los inventarios de hosts de Anisble pueden incluir grupos de grupos de hosts, esto se logra con ':children El ejemplo de sufijo se muestra en el inventario creado anteriormente. Además, no es obligatorio colocar el host en un grupo, simplemente podemos colocar los hosts sin mencionar el grupo de host, como la entrada "control-node.exmaple.com" en el archivo de inventario

Hagamos una operación básica con el comando ansible haciendo referencia a los hosts de inventario.

Para usar el comando ansible para la administración de hosts, la ruta del archivo de inventario del host debe especificarse con “-i ” opción.

$ ansible {patrón de host}  -i  /  –list-hosts

Ejemplo:1 Enumere todos los hosts administrados

Para enumerar todos los hosts administrados, especifique la palabra clave "todos" en lugar del patrón de host en el comando ansible, el ejemplo se muestra a continuación

[[email protected] test-lab]$ ansible all -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (4):
    control-node.example.com
    192.168.0.10
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Otra forma de enumerar todos los hosts administrados es usar el carácter comodín "*".

[[email protected] test-lab]$ ansible '*' -i /home/linuxtechi/test-lab/inventory --list-hosts

Ejemplo:2 Enumere los hosts administrados según el grupo de host.

Especifique el nombre del grupo de host en lugar del patrón de host

[[email protected] test-lab]$ ansible webserver -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$
[[email protected] test-lab]$ ansible datacenter -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Ejemplo:3 Enumere los hosts administrados según el patrón de host comodín.

Enumere todos los hosts que están en el dominio “*.example.com”

[[email protected] test-lab]$ ansible '*.example.com' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (3):
    control-node.example.com
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Enumere todos los hosts que están en la red "192.168.0.0"

[[email protected] test-lab]$ ansible '192.168.0.*' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    192.168.0.10
[[email protected] test-lab]$

Ejemplo:4 Patrón de host avanzado como inclusión y exclusión

Además de los comodines, Ansible nos permite crear patrones de host complejos mediante la lógica de inclusión y exclusión. La inclusión se logra con el carácter ':' para separar grupos en el patrón de host para indicar una lógica OR.

Ejemplo de patrón de inclusión de host

[[email protected] test-lab]$ ansible 'webserver:dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (2):
    servera.example.com
    serverb.example.com
[[email protected] test-lab]$

Ejemplo de patrón de intersección de host

':&' representa la intersección de dos grupos en el archivo de inventario

[[email protected] test-lab]$ ansible 'datacenter:&dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    serverb.example.com
[[email protected] test-lab]$

Ejemplo de patrón de exclusión de host

La exclusión se logra usando el carácter ':' junto con el carácter '!'

[[email protected] test-lab]$ ansible 'datacenter:!dbserver' -i /home/linuxtechi/test-lab/inventory --list-hosts
  hosts (1):
    servera.example.com
[[email protected] test-lab]$

Inventario de host dinámico

El inventario de host en Ansible se puede generar dinámicamente. Las fuentes de información de inventario dinámico incluyen proveedores de nube pública/privada, información del sistema Cobbler, base de datos LDAP o CMDB (base de datos de gestión de configuración). Ansible incluye scripts que manejan información dinámica de hosts, grupos y variables de los proveedores más comunes, como Amazon EC2, Cobbler, Rackspace y OpenStack.

Para los proveedores de la nube, la información de autenticación y acceso debe definirse en archivos a los que pueda acceder el script. Una serie de scripts existentes están disponibles en el sitio GitHub de Ansible en https://github.com/ansible/ansible/tree/devel/contrib/inventory. Estos scripts admiten la generación dinámica de un inventario basado en la información del host disponible en un plataformas de gran número como Openstack , AWS , Ovirt , Satélite Red Hat y OpenShift .

Podemos escribir nuestro propio programa de inventario dinámico personalizado en cualquier lenguaje de programación y debemos devolverlo en formato JSON cuando se pasan las opciones adecuadas. Para que Ansible use un script para recuperar información de hosts del sistema de inventario externo, este script debe ser compatible con la –lista parámetro, que devuelve el grupo de hosts y la información de hosts similar al hash/diccionario de JSON. El ejemplo se muestra a continuación:

[[email protected] test-lab]$ ./inventoryscript --list
{
  "webservers" :["web1.example.com", "web2.example.com" ],
  "dbservers" :["db1.example.com", "db2.example.com"]
}

Un script que crea un inventario dinámico tiene que ser ejecutable para que Ansible lo use.

Nota:Ansible admite el uso de múltiples inventarios en la misma ejecución. Si el valor pasó al parámetro '-i' o el valor del parámetro de inventario en /etc/ansible/ansible.cfg . Cuando existen múltiples archivos de inventario, se examinan en orden alfabético. Por lo tanto, es importante que el nombre de un archivo siga al de otro archivo en orden alfabético si su contenido depende del contenido de otro archivo.


Linux
  1. Cómo uso Ansible y Anacron para la automatización

  2. Cómo manejar bibliotecas dinámicas y estáticas en Linux

  3. Cómo establecer una dirección IP estática y configurar la red en Linux

  4. Cómo administrar la caducidad y el envejecimiento de la contraseña de usuario en Linux

  5. Cómo administrar y enumerar servicios en Linux

Configuraciones de direcciones IP estáticas y dinámicas:implementación de DHCP

Configuraciones de direcciones IP estáticas y dinámicas para DHCP

Cómo instalar y administrar Evillimiter para controlar su red Wi-Fi en Linux

Cómo crear y administrar máquinas virtuales en KVM

Cómo detectar y administrar dispositivos en Linux

Cómo instalar y configurar WordPress con Ansible