Suscríbase al feed

Si gestionas hosts de Windows con Red Hat Ansible Automation Platform, esta publicación de blog es ideal para ti. Quiero hablar sobre el complemento de inventario, que se puede usar para aprovechar Active Directory como fuente de información para Ansible Automation Platform. Primero, demos un paso atrás y veamos los motivos por los que la gestión del inventario es tan importante.

Ansible Automation Platform se diseñó como una herramienta de automatización sencilla, potente y sin agentes.

introducing microsoft active directory inventory plug ansible

La arquitectura sin agentes nos permite ampliar y mejorar la automatización, ya que no estamos limitados a administrar los dispositivos en los que podemos instalar los agentes. En este contexto, la gestión del inventario se convierte en un pilar para el éxito. Por lo general, necesitamos saber:

  • ¿Qué dispositivos debemos gestionar? ¿De dónde obtendremos una lista actualizada y precisa de nuestra infraestructura?
  • ¿Cómo clasificamos los nodos para conocer la forma de automatizarlos? Por ejemplo, la automatización que ejecutamos en un servidor de base de datos será diferente a la de una web.

Los plugins de inventario ofrecen una solución ordenada para estos problemas. Básicamente, son scripts que nos permiten señalar una fuente de información para recopilar una lista de servidores y cualquier característica que nos ayude a comprender mejor la forma de automatizarlos.

Cuando pensamos en la gestión de un entorno de Microsoft Windows, Active Directory es una fuente de información muy llamativa, ya que los servidores suelen estar registrados en un dominio. Gracias a Red Hat Ansible Certified Content Collection para  Microsoft AD, ahora contamos con un excelente conjunto de módulos que interactúan con Microsoft Active Directory y, lo que es más importante, un complemento de inventario que  usa Active Directory como fuente de información. Con este complemento, podemos filtrar y agrupar hosts en función de sus atributos de Active Directory y pertenencias a grupos.

Demos un vistazo al complemento en acción.

La línea de comandos

Comencemos con la línea de comandos usando el navegador de contenido y los entornos de ejecución de la automatización. Puedes encontrar las instrucciones para instalar y configurar el navegador en la documentación de creación de contenido. El entorno de ejecución compatible que se envía con Ansible Automation Platform 2.4+ incluye todo lo que hace falta para comenzar a realizar la integración con Microsoft Active Directory, lo que comprende el conjunto microsoft.ad y las dependencias de Python necesarias. Para las versiones anteriores, es posible que debas personalizar tu entorno de ejecución para incluir estos requisitos previos.

Afortunadamente, el módulo debug_ldap_client se puede usar para verificar las dependencias de Python necesarias, así como la configuración de DNS y Kerberos. Debido a que estamos usando un entorno de ejecución de automatización, ejecutaremos el módulo dentro de la imagen para asegurarnos de tener las dependencias requeridas para el complemento de inventario. Podemos ignorar los mensajes de error, ya que solo nos interesa garantizar que las dependencias de Python estén presentes para nuestro caso práctico.

$ ansible-navigator exec -- ansible localhost -m microsoft.ad.debug_ldap_client
  < Output Truncated >
"packages": {
    "dnspython": "2.3.0",
    "krb5": "0.5.0",
    "pyspnego": "0.9.0",
    "sansldap": "0.1.0"

Para crear una definición de inventario y hacer consultas a nuestro servidor de Active Directory, el archivo debe terminar en microsoft.ad.ldap.yml o microsoft.ad.ldap.yaml, así que solo lo llamaremos microsoft.ad.ldap.yml. Para probarlo, estoy usando la siguiente configuración. Antes de que lo menciones,  sé que el nombre de usuario y la contraseña están en texto sin formato. Esto es así para poder hacer pruebas iniciales de conexión de modo que podamos comenzar a trabajar con algunos de los atributos que podríamos usar. Corregiremos las credenciales más adelante.

plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps

Ahora podemos probar el plugin desde la línea de comandos con el subcomando "inventory" del navegador de Ansible Automation Platform. Dado que estamos usando el modo ldaps, asignamos el almacén de confianza de CA desde nuestro host de Red Hat Enterprise Linux al entorno de ejecución mediante la ruta /etc/pki/ca-trust.

Si observamos el resultado, podemos ver que descubrimos un host denominado MS-AD, que es nuestro controlador de dominio. 

$ ansible-navigator inventory -i microsoft.ad.ldap.yml --list -m stdout --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
"_meta": {
    "hostvars": {
        "MS-AD": {
            "ansible_host": "ms-ad.demolab.local",
            "microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local"
        }
    }
},
"all": {
    "children": [
        "ungrouped"
    ]
},
"ungrouped": {
    "hosts": [
        "MS-AD"
    ]
}
}

La conectividad parece estar en orden, pero la información que obtuvimos es algo escasa y no pudimos agregar el host a ningún grupo. Hay muchos parámetros documentados que podemos introducir en el complemento de inventario para personalizarlo según sea necesario.

De hecho, todos los atributos informáticos de Active Directory se pueden usar para filtrar elementos, establecer variables o agrupar hosts. Para ver todos los que están disponibles para nuestro host MS-AD , podemos usar el siguiente comando de PowerShell en un host de Windows con el módulo PowerShell de Active Directory instalado.

Get-ADComputer -Identity "MS-AD" -Properties *

Incluyamos algunos parámetros adicionales y comencemos a agrupar hosts. Actualiza el archivo de configuración de inventario,  microsoft.ad.ldap.yml, para incorporar algunos atributos que se pueden extraer de Active Directory. En nuestro ejemplo actualizado, estamos obteniendo atributos para "OperatingSystem" y "location", así como una lista de todos los grupos a los que pertenece la computadora. No te preocupes si la línea regex_search se ve extraña, la copié de la documentación.

La última sección de la configuración define nuestros grupos de Ansible Automation Platform para que podamos clasificar los nodos. Todas las máquinas se agregarán automáticamente a un grupo denominado "windows". También añadiremos todos los hosts que sean parte del grupo de dominio “Production” a un grupo correspondiente que lleva el mismo nombre. Por último, sumaremos los hosts a los grupos según los atributos de la ubicación y el sistema operativo. Este es el archivo de configuración final.

plugin: microsoft.ad.ldap
server: ms-ad.demolab.local
username: svc-aap-ldap
password: Redhat123
tls_mode: ldaps
attributes:
  OperatingSystem:
operating_system:
  location:
  memberOf:
computer_membership: this | map("regex_search", '^CN=(?P<name>.+?)((?<!\\),)', '\g<name>') | flatten
groups:
  windows: true
  production: '"Production" in computer_membership'
keyed_groups:
- key: operating_system | lower
  prefix: os
  default_value: unknown
- key: location | lower
  default_value: unknown
  prefix: location

Hagamos una última prueba desde la línea de comandos. Revisemos los atributos que obtenemos de Active Directory. Los valores con "__ansible_unsafe" solo significan que están bloqueados de la plantilla jinja2.

$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --host MS-AD --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
{
    "ansible_host": "ms-ad.demolab.local",
    "computer_membership": [
    {
        "__ansible_unsafe": "Production"
    }
    ],
    "location": {
    "__ansible_unsafe": "london-dc1"
    },
    "microsoft_ad_distinguished_name": "CN=MS-AD,OU=Domain Controllers,DC=demolab,DC=local",
    "operating_system": {
    "__ansible_unsafe": "Windows Server 2019 Standard Evaluation"
    }
}

Luego, veamos la integración del grupo. Ahora nuestro servidor se incluye en cuatro grupos de Ansible Automation Platform que podemos usar para enviarle tareas según sea necesario.

$ ansible-navigator inventory -i microsoft.ad.ldap.yml -m stdout --graph --eev /etc/pki/ca-trust:/etc/pki/ca-trust:O
@all:
  |--@_london_dc1:
  |  |--MS-AD
  |--@os_windows_server_2019_standard_evaluation:
  |  |--MS-AD
  |--@production:
  |  |--MS-AD
  |--@windows:
  |  |--MS-AD

Ya terminamos la prueba. Veamos de qué manera podemos usar esto en un entorno empresarial con el controlador de automatización.

Configuración del controlador de automatización

El controlador de automatización permite que las empresas estandaricen la implementación, el inicio, la delegación y la auditoría de este proceso. Es hora de corregir nuestras credenciales de texto sin formato e implementar algunos controles para la configuración de nuestro inventario.

  1. Creación de un tipo de credencial: el controlador de automatización nos permite definir tipos de credenciales personalizadas para que podamos interactuar con varios sistemas sin descuidar nuestra estrategia de seguridad. Esto nos permitirá aplicar variables del entorno en los tiempos de ejecución, en lugar de tenerlas en texto sin formato. Si exploras la  documentación del plugin de inventario, verás que se aceptan distintas variables para la autenticación. Las usaremos con el controlador de automatización.

    En la interfaz de usuario, dirígete hacia "Credential Types" y haz clic en "Add". Debes asignarle un nombre al tipo de credencial; llamémoslo "Microsoft AD Inventory". En "Input configuration", podemos usar estos campos para definir los que necesitamos para el nombre de usuario, la contraseña y el servidor de Active Directory.

    fields:
      - id: MICROSOFT_AD_LDAP_USERNAME
    type: string
    label: Username
      - id: MICROSOFT_AD_LDAP_PASSWORD
    type: string
    label: Password
    secret: true
      - id: MICROSOFT_AD_LDAP_SERVER
    type: string
    label: AD Server
    required:
      - MICROSOFT_AD_LDAP_USERNAME
      - MICROSOFT_AD_LDAP_PASSWORD
      - MICROSOFT_AD_LDAP_SERVER

    En “Injector configuration” se definen las variables que aplicaremos en la sincronización del inventario. Utiliza lo siguiente:

    env:
      MICROSOFT_AD_LDAP_SERVER: '{{ MICROSOFT_AD_LDAP_SERVER }}'
      MICROSOFT_AD_LDAP_PASSWORD: '{{ MICROSOFT_AD_LDAP_PASSWORD }}'
      MICROSOFT_AD_LDAP_USERNAME: '{{ MICROSOFT_AD_LDAP_USERNAME }}'

 

  1. Creación de una credencial : ahora que tenemos un nuevo tipo de credencial, podemos crear una. Dirígete a "Credentials" y haz clic en "Add". Selecciona el nuevo tipo de credencial de "Microsoft AD Inventory" y completa el nombre de usuario, la contraseña y el servidor de Active Directory, como lo hicimos desde la línea de comandos.

  1. Creación de un proyecto: es conveniente gestionar nuestra configuración del inventario de Active Directory en el control de versiones para que los cambios sigan el proceso de revisiones y aprobaciones de los colegas. Un proyecto en el controlador de automatización nos permite asignar elementos a un repositorio de control de versiones. Envié la configuración que escribimos para la línea de comandos a un repositorio de GitHub: https://github.com/pharriso/ansible_microsoft_ad_inventory

    IMPORTANTE: No hemos enviado nuestro nombre de usuario, contraseña o servidor de Active Directory al control de versiones, ya que ahora los gestiona nuestra credencial en el controlador de automatización. Debes eliminar los parámetros de la configuración del inventario.

    En la interfaz de usuario del controlador de automatización, dirígete a "Projects" y haz clic en "Add". Esta es la información de nuestro proyecto con la URL de control de versiones adecuada. Puedes obtener más información sobre los campos adicionales del proyecto en la documentación.

  1. Creación de un inventario : ya estamos listos para crear nuestro inventario. Dirígete a "Inventories", haz clic en "Add" y, luego, en "Add Inventory". Asigna al inventario un nombre apropiado.

    Una vez que presiones "Save", aparecerán opciones adicionales. Selecciona "Sources" y haz clic en "Add". Aquí armaremos nuestra configuración seleccionando el archivo de configuración de inventario y la credencial. Esta es nuestra fuente de inventario completa.

    NOTA: La única trampa es que debes ingresar manualmente el nombre del archivo de inventario y presionar Intro para completar ese campo.

Cuando hagamos clic en "Save", veremos el botón "Sync" en la parte inferior de la pantalla. Al presionarlo, se ejecutará nuestro complemento de inventario. Podemos hacer un seguimiento revisando el progreso en "Last job status" o en el elemento del menú "Jobs". Si todo salió bien, veremos el mensaje "Success".

Para validar la configuración de nuestro complemento, dirígete a "Inventories", "Demolab AD Inventory" y, luego, selecciona la pestaña "Hosts". Nuestros hosts deberían aparecer importados:

Además, al hacer clic en el host, podemos ver las variables (atributos) que recopilamos de Active Directory. Por último, podemos hacer clic en la pestaña "Groups" para verificar que hayamos agrupado el host correctamente.

 

Siguientes pasos

La gestión del inventario es fundamental para optimizar y ajustar la automatización con Ansible Automation Platform. El plugin de inventario de Microsoft AD demuestra la forma en la que Ansible Automation Platform puede simplificar el proceso para los usuarios como nosotros. Esperamos que, al aprovechar Active Directory como fuente de información, puedas agilizar tu proceso con Ansible Automation Platform para la automatización de Windows.


Sobre el autor

Pat Harrison works for Red Hat in the UK as an Associate Principal Specialist Solution Architect focused on Ansible automation. Prior to this, Pat worked as a Red Hat Consultant helping to deliver solutions across various Red Hat products.
Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

Navegar por canal

automation icon

Automatización

Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos

AI icon

Inteligencia artificial

Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar

open hybrid cloud icon

Nube híbrida abierta

Vea como construimos un futuro flexible con la nube híbrida

security icon

Seguridad

Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías

edge icon

Edge computing

Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge

Infrastructure icon

Infraestructura

Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo

application development icon

Aplicaciones

Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones

Original series icon

Programas originales

Vea historias divertidas de creadores y líderes en tecnología empresarial