GNU/Linux >> Znalost Linux >  >> Linux

Automatizace ServiceNow s Red Hat Ansible Automation Platform

Systémoví správci jsou pravidelně žádáni, aby rychle dokončili servisní požadavky, aby lépe vyhovovaly potřebám podniků a uživatelů, přičemž stále více správců spoléhá na Ansible. Jak můžeme jako správci systému reagovat rychleji, když se objeví tyto požadavky?

Správa služeb IT (ITSM) je soubor zásad a procesů pro správu a podporu služeb IT. Hlavním zaměřením ITSM je zvyšování hodnoty řetězce služeb zákazníků. Bez patřičné podpory automatizace se však poskytování IT služeb může pro administrátory rychle stát velkým žroutem času.

[ Také by se vám mohlo líbit: Stručný průvodce pro správce systému Ansible pro Linux ]

Zde vstupuje do hry Red Hat Ansible Automation Platform a Red Hat Ansible Certified Content Collection for ServiceNow. Ansible Automation (s určitou pomocí stávajícího obsahu Ansible) dokáže automatizovat téměř jakýkoli úkol, zatímco moduly z této Certified Collection vám umožňují udržovat informace ServiceNow aktuální.

Tato kolekce byla navržena a vyvinuta týmem XLAB Steampunk v úzké spolupráci s Red Hat Ansible, konkrétně s ohledem na koncové uživatele. Moduly ServiceNow mají intuitivní uživatelské rozhraní podporované robustní implementací, která nabízí podporu pro věci, které uživatelé Ansible očekávají (např. režim kontroly a detekce změn).

V tomto příspěvku demonstruji několik ukázkových knih Ansible Playbook, které se starají o základní úkoly správce, jako jsou:

  1. Aktualizace incidentů, problémů a požadavků na změny
  2. Aktualizace databáze správy konfigurace ServiceNow (CMDB)
  3. Použití CMDB jako zdroje inventáře

Instalace kolekce certifikovaného obsahu pro ServiceNow

Můžete si stáhnout servicenow.itsm Sbírka z automatizačního centra nebo Ansible Galaxy. Než budete mít přístup k obsahu v centru automatizace, musíte nejprve nakonfigurovat své přihlašovací údaje v konfiguračním souboru Ansible. Podrobnosti najdete v příspěvku blogu „Hands On With Ansible Collections“.

Jakmile budete mít své přihlašovací údaje, můžete nainstalovat ServiceNow Collection spuštěním následujícího příkazu:

$ ansible-galaxy collection install servicenow.itsm

Pokud vše půjde podle plánu, máte nyní přístup k následujícím modulům:

  1. servicenow.itsm.incident pro správu incidentových lístků
  2. servicenow.itsm.problem pro interakci s problémy
  3. servicenow.itsm.change_request pro zpracování změn
  4. servicenow.itsm.configuration_item pro správu CMDB

Každý z modulů má také protějšek, který vám poskytuje přístup pouze pro čtení k záznamům ServiceNow.

Sbírka certifikovaného obsahu pro ServiceNow také obsahuje plugin inventáře s názvem servicenow.itsm.now který vám umožňuje používat CMDB jako zdroj inventáře.

Chcete-li ověřit, že se nic nezkazilo, zobrazte dokumentaci k jednomu z modulů provedením následujícího příkazu:

$ ansible-doc servicenow.itsm.incident

Pokud na nás Ansible nekřičel, je hotovo.

Řízení incidentů, způsob Ansible

Vytvoření nového tiketu incidentu pomocí Ansible je poměrně jednoduché, ale než to budete moci udělat, musíte Ansible sdělit, kde sídlí vaše instance ServiceNow a jaké přihlašovací údaje použít. Udělejte to nastavením tří proměnných prostředí:

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

Nyní, když máte připravené přihlašovací údaje, můžete vytvořit nový incident. Minimální Ansible playbook by vypadal asi takto:

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

Jakmile se dokončí provádění předchozí příručky, najdete nový incident uvedený v ServiceNow.

Stávající incident můžete aktualizovat zadáním čísla tiketu nebo systémového id záznamu incidentu. Ansible porovná aktuální a požadovaný stav incidentu a provede nezbytné změny, aby je synchronizoval.

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

Pokud Ansible spustíte s --diff přepínač, oznámí, jaké změny provedl v záznamu incidentu:

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

Můžete také odstranit existující incident nastavením stavu parametr absent .

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

Stejným způsobem můžete pracovat s problémy a měnit požadavky. Správa položek konfigurace je však trochu jiná, takže se na tuto oblast zaměřme příště.

Aktualizace CMDB

Protože ServiceNow CMDB má více než jeden typ konfigurační položky, musíte zadat sys_class_name parametr při přidávání nových položek. Ve výchozím nastavení servicenow.itsm.configuration_item modul bude používat cmdb_ci název systémové třídy, ale můžete jej změnit na jakýkoli jiný odvozený z cmdb_ci třída.

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

Použili jste obecné jiné parametr, který může v poslední úloze obsahovat libovolné páry klíč–hodnota. Protože tabulky ServiceNow jsou rozšiřitelné, mají tento parametr všechny moduly. Můžete použít jiné parametr pro nastavení hodnot sloupců, které moduly nevystavují jako parametry nejvyšší úrovně. Všechny moduly ServiceNow Ansible mají tento parametr.

Při aktualizaci nebo odstranění existující položky nemusíte zadávat název systémové třídy, protože modul automaticky získá název z aktuálního záznamu. Musíte však zadat sys_id hodnota parametru.

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

Dynamický inventář

CMDB může také sloužit jako zdroj inventáře. Protože konfigurační položky, které představují servery a virtuální počítače (VM), obvykle obsahují IP adresy, můžete je použít jako zdroj inventáře.

Minimální konfigurace pluginu inventáře vypadá takto:

---
plugin: servicenow.itsm.now

Při použití jako zdroj inventáře vypíše plugin všechny servery z cmdb_ci_server stůl. Hostitele inventáře můžete automaticky seskupovat a filtrovat na základě podmínek uvedených v parametru group_by možnost konfigurace:

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

V předchozím příkladu Ansible vytvořil dvě skupiny:jednu pro Windows XP a jednu pro počítače se systémem Linux. Zásuvný modul inventáře provádí co nejvíce filtrování na backendu, čímž minimalizuje množství stahovaných dat.

Můžete také nakonfigurovat, které hodnoty sloupců plugin inventáře přidá jako hostitelské proměnné:

---
plugin: servicenow.itsm.now

columns:
  - name
  - classification
  - cpu_type

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

Chcete-li konfiguraci otestovat, spusťte následující příkaz:

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

Za předpokladu, že jste konfiguraci inventáře uložili do inventory.now.yaml soubor. Výstup by měl vypadat nějak takto:

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

A teď, když už víte, jak používat jednotlivé moduly a plugin pro inventář, je čas na velké finále.

Automatické řešení standardního požadavku na změnu

Standardní požadavky na změnu jsou předem schválené postupy s minimálními riziky a tyto vlastnosti z nich dělají hlavní kandidáty na automatizaci.

Takže bez dalších okolků zde je příručka, která:

  1. Vyhledejte požadavek na změnu podle jeho čísla
  2. Označte požadavek na změnu jako na kterém se pracuje
  3. Získejte dotčenou položku konfigurace z požadavku na změnu
  4. Proveďte požadované operace na uvedené konfigurační položce a nakonec
  5. Zavřete žádost o změnu
---
- 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

Kdo by si pomyslel, že se dá tolik úžasnosti nacpat do jediné příručky?

[ Hledáte více o automatizaci systému? Začněte s The Automated Enterprise, bezplatnou knihou od Red Hat. ] 

Budoucnost je automatická

Pokryl jsem toho docela dost, ale stále se mi podařilo poškrábat povrch toho, co je možné. Takže zamiřte do centra automatizace nebo Ansible Galaxy, stáhněte si ServiceNow ITSM Ansible Collection a začněte objevovat. Toto nové řešení můžete také vidět v akci na tomto webináři.

Pokud potřebujete pomoc s automatizací procesů ServiceNow a integrací s platformou Red Hat Ansible Automation Platform, obraťte se na náš tým v XLAB Steampunk, který vám může pomoci rychle začít.


Linux
  1. Automatizace upstream vydání s release-botem

  2. Obnovuji své vzrušení z práce s Ansible

  3. Co je Red Hat Linux?

  1. Zaregistrujte si Red Hat Enterprise Linux a připojte předplatné s Ansible

  2. Jak zrcadlit úložiště v Linuxu

  3. Použití Ansible k nasazení Microsoft SQL Server 2019 na Red Hat Enterprise Linux 8

  1. Jak nastavit SSL/TLS s Apache httpd na Red Hat

  2. Práce se závislostmi balíčků na Red Hat Linuxu

  3. Jak přidat úložiště do Red Hat Linux s a bez proxy