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:
- Aktualizace incidentů, problémů a požadavků na změny
- Aktualizace databáze správy konfigurace ServiceNow (CMDB)
- 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:
- servicenow.itsm.incident pro správu incidentových lístků
- servicenow.itsm.problem pro interakci s problémy
- servicenow.itsm.change_request pro zpracování změn
- 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á:
- Vyhledejte požadavek na změnu podle jeho čísla
- Označte požadavek na změnu jako na kterém se pracuje
- Získejte dotčenou položku konfigurace z požadavku na změnu
- Proveďte požadované operace na uvedené konfigurační položce a nakonec
- 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.