GNU/Linux >> Linux Esercitazione >  >> Linux

Automatizzare ServiceNow con Red Hat Ansible Automation Platform

Agli amministratori di sistema viene chiesto regolarmente di completare rapidamente le richieste di servizio per soddisfare meglio le esigenze aziendali e degli utenti, con sempre più amministratori che si affidano ad Ansible per farlo. Come possiamo, come amministratori di sistema, rispondere più velocemente quando arrivano queste richieste?

La gestione dei servizi IT (ITSM) è una raccolta di politiche e processi per la gestione e il supporto dei servizi IT. L'obiettivo principale di ITSM è aumentare il valore della catena di servizi dei clienti. Ma senza l'opportuno supporto per l'automazione, la fornitura di servizi IT può diventare rapidamente un importante dispendio di tempo per gli amministratori.

[ Potrebbe piacerti anche: Guida introduttiva ad Ansible per gli amministratori di sistema Linux ]

È qui che entrano in gioco la Red Hat Ansible Automation Platform e la Red Hat Ansible Certified Content Collection per ServiceNow. Ansible Automation (con l'aiuto dei contenuti Ansible esistenti) può automatizzare qualsiasi attività, mentre i moduli di questa raccolta certificata consentono di mantenere aggiornate le informazioni di ServiceNow.

Questa collezione è stata progettata e sviluppata dal team di XLAB Steampunk in stretta collaborazione con Red Hat Ansible, tenendo a mente in particolare gli utenti finali. I moduli ServiceNow hanno un'interfaccia utente intuitiva supportata da una solida implementazione, che offre supporto per le cose che gli utenti Ansible si aspettano (ad esempio, modalità di verifica e rilevamento delle modifiche).

In questo post, mostro alcuni esempi di Ansible Playbook che si occupano di attività amministrative essenziali come:

  1. Aggiornamento di incidenti, problemi e richieste di modifica
  2. Aggiornamento del database di gestione della configurazione di ServiceNow (CMDB)
  3. Utilizzo del CMDB come fonte di inventario

Installazione della raccolta di contenuti certificati per ServiceNow

Puoi scaricare servicenow.itsm Raccolta da hub di automazione o Ansible Galaxy. Prima di poter accedere ai contenuti nell'hub di automazione, devi prima configurare le credenziali nel file di configurazione di Ansible. Per i dettagli, fare riferimento al post del blog "Hands On With Ansible Collections".

Una volta che hai le tue credenziali, puoi installare ServiceNow Collection eseguendo il comando seguente:

$ ansible-galaxy collection install servicenow.itsm

Se tutto va secondo i piani, ora hai accesso ai seguenti moduli:

  1. servicenow.itsm.incident per la gestione dei ticket di incidente
  2. servicenow.itsm.problem per interagire con i problemi
  3. servicenow.itsm.change_request per la gestione delle modifiche
  4. servicenow.itsm.configuration_item per la gestione del CMDB

Ciascuno dei moduli ha anche una controparte che ti dà accesso in sola lettura ai record di ServiceNow.

La raccolta di contenuti certificati per ServiceNow contiene anche un plug-in di inventario chiamato servicenow.itsm.now che ti consente di utilizzare CMDB come origine dell'inventario.

Per verificare che nulla sia andato storto, mostra la documentazione per uno dei moduli eseguendo il comando seguente:

$ ansible-doc servicenow.itsm.incident

Se Ansible non ci ha sgridato, sei a posto.

Gestire gli incidenti, il modo Ansible

La creazione di un nuovo ticket di incidente utilizzando Ansible è ragionevolmente semplice, ma prima di poterlo fare, devi indicare ad Ansible dove si trova la tua istanza ServiceNow e quali credenziali utilizzare. Fallo impostando tre variabili di ambiente:

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

Ora che hai le credenziali pronte, puoi creare un nuovo incidente. Il playbook minimo di Ansible sarebbe simile a questo:

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

Al termine dell'esecuzione del playbook precedente, troverai un nuovo incidente elencato in ServiceNow.

È possibile aggiornare un incidente esistente fornendo un numero di ticket o un ID di sistema del record dell'incidente. Ansible confronterà lo stato attuale e quello desiderato dell'incidente e apporterà le modifiche necessarie per sincronizzarli.

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

Se esegui Ansible con --diff switch, riporterà le modifiche apportate al record dell'incidente:

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",

Puoi anche eliminare un incidente esistente impostando lo stato parametro su absent .

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

È possibile interagire con i problemi e modificare le richieste allo stesso modo. Tuttavia, la gestione degli elementi di configurazione è leggermente diversa, quindi concentriamoci su quest'area in seguito.

Aggiornamento del CMDB

Poiché ServiceNow CMDB ha più di un tipo di elemento di configurazione, devi specificare il sys_class_name parametro quando si aggiungono nuovi elementi. Per impostazione predefinita, il servicenow.itsm.configuration_item il modulo utilizzerà cmdb_ci nome della classe di sistema, ma puoi cambiarlo in qualsiasi altro cmdb_ci-derived classe.

---
- 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 }}"

Hai usato il generico altro parametro che può contenere coppie chiave-valore arbitrarie nell'ultima attività. Poiché le tabelle di ServiceNow sono estensibili, tutti i moduli hanno questo parametro. Puoi usare l'altro parametro per impostare i valori di colonna che i moduli non espongono come parametri di primo livello. Tutti i moduli ServiceNow Ansible hanno questo parametro.

Quando si aggiorna o si elimina un elemento esistente, non è necessario specificare il nome della classe di sistema perché il modulo recupererà automaticamente il nome dal record corrente. Tuttavia, devi fornire un sys_id valore del parametro.

---
- 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 dinamico

Il CMDB può anche fungere da origine dell'inventario. Poiché gli elementi di configurazione che rappresentano server e macchine virtuali (VM) di solito contengono indirizzi IP, puoi utilizzarli come origine dell'inventario.

La configurazione minima per il plug-in dell'inventario è simile alla seguente:

---
plugin: servicenow.itsm.now

Se utilizzato come origine dell'inventario, il plug-in elencherà tutti i server dal cmdb_ci_server tavolo. Puoi raggruppare e filtrare automaticamente gli host dell'inventario in base alle condizioni specificate in group_by opzione di configurazione:

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

Nell'esempio precedente, Ansible ha creato due gruppi:uno per Windows XP e uno per computer Linux. Il plug-in dell'inventario esegue il maggior numero possibile di filtri sul back-end, riducendo al minimo la quantità di dati scaricati.

Puoi anche configurare i valori di colonna che il plug-in dell'inventario aggiunge come variabili host:

---
plugin: servicenow.itsm.now

columns:
  - name
  - classification
  - cpu_type

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

Per testare la configurazione, esegui il seguente comando:

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

Supponendo che tu abbia memorizzato la configurazione dell'inventario in inventory.now.yaml file. L'output dovrebbe essere simile a questo:

@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:

E ora che sai come utilizzare i singoli moduli e il plug-in dell'inventario, è il momento del gran finale.

Risoluzione automatica di una richiesta di modifica standard

Le richieste di modifica standard sono procedure pre-approvate con rischi minimi e queste proprietà le rendono i candidati ideali per l'automazione.

Quindi, senza ulteriori indugi, ecco il playbook che:

  1. Cerca la richiesta di modifica in base al suo numero
  2. Segna la richiesta di modifica come in lavorazione
  3. Recupera l'elemento di configurazione interessato dalla richiesta di modifica
  4. Esegui le operazioni richieste su tale elemento di configurazione e, infine
  5. Chiudi la richiesta di modifica
---
- 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

Chi avrebbe mai potuto pensare che si possano racchiudere così tante meraviglie in un unico playbook?

[ Cerchi ulteriori informazioni sull'automazione dei sistemi? Inizia con The Automated Enterprise, un libro gratuito di Red Hat. ] 

Il futuro è automatico

Ho coperto parecchio, ma sono comunque riuscito a scalfire solo la superficie di ciò che è possibile. Quindi vai all'hub di automazione o Ansible Galaxy, scarica ServiceNow ITSM Ansible Collection e inizia a esplorare. Puoi anche vedere questa nuova soluzione in azione in questo webinar.

Se hai bisogno di aiuto con l'automazione dei processi ServiceNow e l'integrazione con Red Hat Ansible Automation Platform, contatta il nostro team di XLAB Steampunk che può aiutarti a iniziare a lavorare in pochissimo tempo.


Linux
  1. Automatizzare i rilasci a monte con release-bot

  2. Registra Red Hat Enterprise Linux e allega un abbonamento ad Ansible

  3. Come eseguire il mirroring di un repository in Linux

  4. Utilizzo di Ansible per distribuire Microsoft SQL Server 2019 su Red Hat Enterprise Linux 8

  5. Rinnovando il mio brivido di lavoro con Ansible

Lavorare con il kernel in tempo reale per Red Hat Enterprise Linux

Red Hat Insights:gestione delle vulnerabilità

Presentazione del nuovo Ansible Automation Hub

6 passaggi per automatizzare il push del codice con Ansible Automation Platform

Configurazione di un server OpenVPN con Red Hat Linux e Viscosity

Aggiornato:Red Hat sarà acquisita da IBM