GNU/Linux >> Tutoriales Linux >  >> Linux

Automatización de ServiceNow con Red Hat Ansible Automation Platform

A los administradores de sistemas se les pide regularmente que completen rápidamente las solicitudes de servicio para satisfacer mejor las necesidades comerciales y de los usuarios, y cada vez más administradores confían en Ansible para hacerlo. ¿Cómo podemos nosotros, como administradores de sistemas, responder más rápido cuando surgen estas solicitudes?

La gestión de servicios de TI (ITSM) es un conjunto de políticas y procesos para la gestión y el soporte de los servicios de TI. El enfoque principal de ITSM es aumentar el valor de la cadena de servicio de los clientes. Pero sin el soporte de automatización adecuado, la prestación de servicios de TI puede convertirse rápidamente en una gran pérdida de tiempo para los administradores.

[ También te puede interesar: Guía de inicio rápido de Ansible para administradores de sistemas de Linux]

Aquí es donde entran en juego Red Hat Ansible Automation Platform y Red Hat Ansible Certified Content Collection para ServiceNow. Ansible Automation (con algo de ayuda del contenido de Ansible existente) puede automatizar casi cualquier tarea, mientras que los módulos de esta colección certificada le permiten mantener la información de ServiceNow actualizada.

Esta colección fue diseñada y desarrollada por el equipo XLAB Steampunk en estrecha colaboración con Red Hat Ansible, teniendo en cuenta específicamente a los usuarios finales. Los módulos de ServiceNow tienen una interfaz de usuario intuitiva respaldada por una implementación robusta, que ofrece soporte para las cosas que los usuarios de Ansible esperan (por ejemplo, modo de verificación y detección de cambios).

En esta publicación, muestro algunos ejemplos de Playbooks de Ansible que se encargan de tareas administrativas esenciales como:

  1. Actualización de incidentes, problemas y solicitudes de cambio
  2. Actualización de la base de datos de administración de configuración de ServiceNow (CMDB)
  3. Uso de la CMDB como fuente de inventario

Instalación de la recopilación de contenido certificado para ServiceNow

Puede descargar el servicenow.itsm Recopilación desde el centro de automatización o Ansible Galaxy. Antes de poder acceder al contenido en el centro de automatización, primero debe configurar sus credenciales en el archivo de configuración de Ansible. Para obtener más información, consulte la publicación de blog "Manos a la obra con las colecciones de Ansible".

Una vez que tenga sus credenciales, puede instalar ServiceNow Collection ejecutando el siguiente comando:

$ ansible-galaxy collection install servicenow.itsm

Si todo sale según lo planeado, ahora tiene acceso a los siguientes módulos:

  1. servicenow.itsm.incident para gestionar tickets de incidentes
  2. servicenow.itsm.problema para interactuar con problemas
  3. servicenow.itsm.change_request para manejar cambios
  4. servicenow.itsm.configuration_item para gestionar la CMDB

Cada uno de los módulos también tiene una contraparte que le brinda acceso de solo lectura a los registros de ServiceNow.

La colección de contenido certificado para ServiceNow también contiene un complemento de inventario llamado servicenow.itsm.now que le permite utilizar CMDB como fuente de inventario.

Para verificar que nada salió mal, muestre la documentación de uno de los módulos ejecutando el siguiente comando:

$ ansible-doc servicenow.itsm.incident

Si Ansible no nos gritó, ya está todo listo.

Gestionar incidentes, al estilo Ansible

Crear un nuevo ticket de incidente con Ansible es razonablemente sencillo, pero antes de que pueda hacerlo, debe indicarle a Ansible dónde se encuentra su instancia de ServiceNow y qué credenciales usar. Hágalo configurando tres variables de entorno:

$ export SN_HOST='https://dev12345.service-now.com'
$ export SN_USERNAME='user'
$ export SN_PASSWORD='pass'

Ahora que tiene sus credenciales listas, puede crear un nuevo incidente. El libro de jugadas mínimo de Ansible se vería así:

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Create new incident
      servicenow.itsm.incident:
        state: new
        short_description: Demo incident

Una vez que el libro de jugadas anterior termine de ejecutarse, encontrará un nuevo incidente en ServiceNow.

Puede actualizar un incidente existente proporcionando un número de ticket o una identificación del sistema del registro del incidente. Ansible comparará los estados actual y deseado del incidente y realizará los cambios necesarios para sincronizarlos.

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Update incident
      servicenow.itsm.incident:
        number: INC0010022
        state: in_progress

Si ejecuta Ansible con --diff switch, informará qué cambios implementó en el registro de incidentes:

TASK [Update incident with a problem information] ***************************
--- before
+++ after
@@ -50,7 +50,7 @@
     "parent": "",
     "parent_incident": "",
     "priority": "5",
-    "state": "new",
+    "state": "in_progress",
     "reassignment_count": "0",
     "reopen_count": "0",
     "reopened_by": "",
@@ -71,10 +71,10 @@
     "sys_domain": "global",
     "sys_domain_path": "/",
     "sys_id": "2396e496074f2010d4a1fa9e7c1ed01c",
-    "sys_mod_count": "0",
+    "sys_mod_count": "1",
     "sys_tags": "",
     "sys_updated_by": "admin",

También puede eliminar un incidente existente configurando el estado parámetro a absent .

---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Delete incident
      servicenow.itsm.incident:
        number: INC0010022
        state: absent

Puede interactuar con los problemas y las solicitudes de cambio de la misma manera. Sin embargo, administrar elementos de configuración es un poco diferente, así que centrémonos en esta área a continuación.

Actualización de la CMDB

Debido a que ServiceNow CMDB tiene más de un tipo de elemento de configuración, debe especificar el sys_class_name parámetro al agregar nuevos elementos. De forma predeterminada, servicenow.itsm.configuration_item módulo utilizará el cmdb_ci nombre de clase del sistema, pero puede cambiarlo a cualquier otro derivado de cmdb_ci clase.

---
- name: Demonstrate CMDB management
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Simulate VM creation
      ansible.builtin.set_fact:
        instance:
          name: some-name
          id: vm1234567890
          public_ip_address: 1.2.3.4

    - name: Register the newly-created VM instance
      servicenow.itsm.configuration_item:
        name: "{{ instance.name }}"
        sys_class_name: cmdb_ci_vm_instance
        ip_address: "{{ instance.public_ip_address }}"
        other:
          vm_inst_id: "{{ instance.id }}"

Usaste el genérico otro parámetro que puede contener pares clave-valor arbitrarios en la última tarea. Debido a que las tablas de ServiceNow son extensibles, todos los módulos tienen este parámetro. Puedes usar el otro para establecer valores de columna que los módulos no exponen como parámetros de nivel superior. Todos los módulos de ServiceNow Ansible tienen este parámetro.

Al actualizar o eliminar un elemento existente, no es necesario que especifique el nombre de la clase del sistema porque el módulo recuperará automáticamente el nombre del registro actual. Sin embargo, debe proporcionar un sys_id valor del parámetro.

---
- name: Demonstrate CMDB item update and deletion
  hosts: localhost
  gather_facts: false
  tasks:
    - name: Update the VM state
      servicenow.itsm.configuration_item:
        sys_id: b0ccabf1c0a80009001f14fd151d8df0
        install_status: in_maintenance

    - name: Remove item from CMDB
      servicenow.itsm.configuration_item:
        sys_id: b0ccabf1c0a80009001f14fd151d8df0
        state: absent

Inventario dinámico

La CMDB también puede servir como fuente de inventario. Dado que los elementos de configuración que representan servidores y máquinas virtuales (VM) suelen contener direcciones IP, puede utilizarlos como fuente de inventario.

La configuración mínima para el complemento de inventario se ve así:

---
plugin: servicenow.itsm.now

Cuando se utiliza como fuente de inventario, el complemento mostrará una lista de todos los servidores del cmdb_ci_server mesa. Puede agrupar y filtrar automáticamente los hosts de inventario en función de las condiciones especificadas en group_by opción de configuración:

---
plugin: servicenow.itsm.now
group_by:
  os:
    includes:
      - Linux Red Hat
      - Windows XP

En el ejemplo anterior, Ansible creó dos grupos:uno para Windows XP y otro para equipos con Linux. El complemento de inventario realiza el mayor filtrado posible en el backend, lo que minimiza la cantidad de datos descargados.

También puede configurar qué valores de columna agrega el complemento de inventario como variables de host:

---
plugin: servicenow.itsm.now

columns:
  - name
  - classification
  - cpu_type

group_by:
  os:
    includes:
      - Linux Red Hat
      - Windows XP

Para probar la configuración, ejecuta el siguiente comando:

$ ansible-inventory -i inventory.now.yaml --graph --vars

Suponiendo que almacenó la configuración del inventario en el inventory.now.yaml expediente. La salida debería verse así:

@all:
 |--@Linux_Red_Hat:
 |  |--P1000019
 |  |  |--{ansible_host = my1.server.com}
 |  |  |--{classification = Production}
 |  |  |--{cpu_type = Intel}
 |  |  |--{name = SAP-SD-01}
 |--@Windows_XP:
 |  |--P1000020
 |  |  |--{ansible_host = my2.server.com}
 |  |  |--{classification = Production}
 |  |  |--{cpu_type = Intel}
 |  |  |--{name = SAP-SD-02}
 |--@ungrouped:

Y ahora que sabe cómo usar módulos individuales y el complemento de inventario, es hora de la gran final.

Resolución automática de una solicitud de cambio estándar

Las solicitudes de cambio estándar son procedimientos aprobados previamente con riesgos mínimos, y estas propiedades los convierten en los principales candidatos para la automatización.

Entonces, sin más preámbulos, aquí está el libro de jugadas que:

  1. Busque la solicitud de cambio por su número
  2. Marcar la solicitud de cambio como en la que se está trabajando
  3. Recuperar el elemento de configuración afectado de la solicitud de cambio
  4. Realizar las operaciones solicitadas en dicho elemento de configuración y finalmente
  5. Cerrar la solicitud de cambio
---
- hosts: localhost
  gather_facts: false
  tasks:
    - name: Mark change request as in progress
      servicenow.itsm.change_request:
        number: "{{ change_number }}"
        state: implement
      register: change

    - name: Fetch configuration item we will update
      servicenow.itsm.configuration_item_info:
        sys_id: "{{ change.record.cmdb_ci }}"
      register: citem

    - name: Create an in-memory inventory with the item
      ansible.builtin.add_host:
        name: host_to_update
        ansible_host: "{{ citem.record.ip_address }}"

- hosts: host_to_update
  tasks:
    - name: Simulate some work
      ansible.builtin.debug:
        msg: Doing real work here

- hosts: localhost
  gather_facts: false
  tasks:
    - name: Mark change request as done
      servicenow.itsm.change_request:
        number: "{{ change_number }}"
        state: closed

¿Quién podría haber pensado que uno puede meter tanta genialidad en un solo libro de jugadas?

[ ¿Busca más información sobre la automatización de sistemas? Comience con The Automated Enterprise, un libro gratuito de Red Hat. ] 

El futuro es automático

Cubrí bastante, pero solo logré arañar la superficie de lo que es posible. Así que diríjase al centro de automatización o Ansible Galaxy, descargue ServiceNow ITSM Ansible Collection y comience a explorar. También puede ver esta nueva solución en acción en este seminario web.

Si necesita ayuda con la automatización de sus procesos de ServiceNow y la integración con Red Hat Ansible Automation Platform, comuníquese con nuestro equipo en XLAB Steampunk, quienes pueden ayudarlo a ponerse en marcha de inmediato.


Linux
  1. Automatización de versiones upstream con release-bot

  2. Registre Red Hat Enterprise Linux y adjunte una suscripción con Ansible

  3. Cómo duplicar un repositorio en Linux

  4. Uso de Ansible para implementar Microsoft SQL Server 2019 en Red Hat Enterprise Linux 8

  5. ¿Qué es Red Hat Linux?

Trabajar con el kernel en tiempo real para Red Hat Enterprise Linux

Red Hat Insights:gestión de vulnerabilidades

Presentamos el nuevo Ansible Automation Hub

6 pasos para automatizar envíos de código con Ansible Automation Platform

Configuración de un servidor OpenVPN con Red Hat Linux y Viscosity

Actualizado:Red Hat será adquirida por IBM