Mithilfe von gehosteten Automation Orchestrator-Workflows können Sie Automation Assembler mit ServiceNow für ITSM-Übereinstimmung integrieren.

Der ServiceNow-Integrationsablauf durchläuft mehrere Cloud Assembly-, vSphere-, vRealize Orchestrator- und ServiceNow-Dienste und -APIs.

Unternehmensbenutzer integrieren ihre Cloud Management Platform zu Übereinstimmungszwecken in der Regel mit einer ITSM- (IT Service Management) und einer CMDB-Plattform (Configuration Management Database). Im Anschluss an dieses Beispiel können Sie Automation Assembler mit ServiceNow für CMDB und ITSM unter Verwendung von gehosteten Automation Orchestrator-Workflows integrieren. Bei Verwendung von Automation Orchestrator-Integrationen und -Workflows sind Funktions-Tags besonders nützlich, wenn Sie über mehrere Instanzen für verschiedene Umgebungen verfügen. Weitere Informationen zu Funktions-Tags finden Sie unter Verwenden von Funktions-Tags in Automation Assembler.
Hinweis: Sie können ServiceNow unter Verwendung von Erweiterbarkeitsaktionsskripts auch mit Automation Assembler integrieren. Informationen zum Integrieren von ServiceNow mithilfe von Erweiterbarkeitsaktionsskripts finden Sie unter Vorgehensweise zum Integrieren von Automation Assembler in ServiceNow unter Verwendung von Erweiterbarkeitsaktionen.

In diesem Beispiel besteht die ServiceNow-Integration aus drei Workflows auf oberster Ebene. Jeder Workflow verfügt über eigene Abonnements, sodass Sie jede Komponente einzeln aktualisieren und durchlaufen lassen können.

  • Einstiegspunkt des Ereignisabonnements – Einfache Protokollierung, gibt gegebenenfalls den anfordernden Benutzer und die vCenter-VM an.
  • Integrations-Workflow – trennt Objekte und speist Eingaben in den technischen Workflow ein, verarbeitet Protokollierungs-, Eigenschaften- und Ausgabeaktualisierungen.
  • Technischer Workflow – nachgelagerte Systemintegration für die ServiceNow-API zum Erstellen der CMDB-CI-, CR- und Automation Assembler-IaaS-API mit zusätzlichen VM-Eigenschaften außerhalb der Nutzlast.

Voraussetzungen

Prozedur

  1. Erstellen und speichern Sie in Automation Orchestrator eine Konfigurationsdatei, die eine allgemeine, in mehreren Workflows verwendete Konfiguration enthält.
  2. Speichern Sie Ihr Automation Assembler-API-Token am selben Speicherort wie die Konfigurationsdatei aus Schritt 1.
    Hinweis: Das Automation Assembler-API-Token weist ein Ablaufdatum auf.
  3. Erstellen Sie mit dem bereitgestellten Skriptelement einen Workflow in Automation Orchestrator. Dieses Skript verweist auf einen REST-Host und sucht nach diesem. Es standardisiert auch REST-Aktionen, die einen optionalen Parameter eines Tokens verwenden, der als zusätzlicher Autorisierungs-Header hinzugefügt wird.
    var configPath = "CS"
    var configName = "environmentConfig"
    var attributeName = "CASRestHost"
    
    //get REST Host from configuration element
    var restHost = System.getModule("au.com.cs.example").getRestHostFromConfig(configPath,configName,attributeName)
    
    var ConfigurationElement = System.getModule("au.com.cs.example").getConfigurationElementByName(configName,configPath);
    System.debug("ConfigurationElement:" + ConfigurationElement);
    var casToken = ConfigurationElement.getAttributeWithKey("CASToken")["value"]
    if(!casToken){
    	throw "no CAS Token";
    }
    //REST Template
    var opName = "casLogin";
    var opTemplate = "/iaas/login";
    var opMethod = "POST";
    
    // create the REST operation:
    var opLogin = System.getModule("au.com.cs.example").createOp(restHost,opName,opMethod,opTemplate);
    
    //cas API Token
    var contentObject = {"refreshToken":casToken}
    postContent = JSON.stringify(contentObject);
    
    var loginResponse = System.getModule("au.com.cs.example").executeOp(opLogin,null,postContent,null) ;
    
    try{
    	var tokenResponse = JSON.parse(loginResponse)['token']
    	System.debug("token: " + tokenResponse);
    } catch (ex) {
    	throw ex + " No valid token";
    }
    
    //REST Template  Machine Details
    var opName = "machineDetails";
    var opTemplate = "/iaas/machines/" + resourceId;
    var opMethod = "GET";
    
    var bearer = "Bearer " + tokenResponse;
    
    var opMachine = System.getModule("au.com.cs.example").createOp(restHost,opName,opMethod,opTemplate);
    
    // (Rest Operation, Params, Content, Auth Token)
    var vmResponse = System.getModule("au.com.cs.example").executeOp(opMachine,null,"",bearer) ;
    
    try{
    	var vm = JSON.parse(vmResponse);
    } catch (ex) {
    	throw ex + " failed to parse vm details"
    }
    
    System.log("cpuCount: " + vm["customProperties"]["cpuCount"]);
    System.log("memoryInMB: " + vm["customProperties"]["memoryInMB"]);
    
    cpuCount =  vm["customProperties"]["cpuCount"];
    memoryMB = vm["customProperties"]["memoryInMB"];

    Dieses Skript sendet die Ausgabe cpuCount und memoryMB an den übergeordneten Workflow und aktualisiert die vorhandenen customProperties-Eigenschaften. Diese Werte können bei der Erstellung der CMDB in nachfolgenden Workflows verwendet werden.

  4. Fügen Sie das ServiceNow-CMDB-Skriptelement zum Erstellen des Konfigurationselements zu Ihrem Workflow hinzu. Dieses Element sucht mithilfe des Konfigurationselements nach dem ServiceNow-REST-Host, erstellt einen REST-Vorgang für die cmdb_ci_vmware_instance-Tabelle sowie basierend auf Workflow-Eingaben für Post-Daten eine Zeichenfolge aus Inhaltsobjekten und gibt die zurückgegebene sys_id aus.
    var configPath = "CS"
    var configName = "environmentConfig"
    var attributeName = "serviceNowRestHost"
    var tableName = "cmdb_ci_vmware_instance"
    
    //get REST Host from configuration element
    var restHost = System.getModule("au.com.cs.example").getRestHostFromConfig(configPath,configName,attributeName)
    
    //REST Template
    var opName = "serviceNowCreatCI";
    var opTemplate = "/api/now/table/" + tableName;
    var opMethod = "POST";
    
    // create the REST operation:
    var opCI = System.getModule("au.com.cs.example").createOp(restHost,opName,opMethod,opTemplate);
    
    
    //cmdb_ci_vm_vmware table content to post;
    var contentObject = {};
    contentObject["name"] = hostname;
    contentObject["cpus"] = cpuTotalCount;
    contentObject["memory"] = MemoryInMB;
    contentObject["correlation_id"]=  deploymentId
    contentObject["disks_size"]=  diskProvisionGB
    contentObject["location"] = "Sydney";
    contentObject["vcenter_uuid"] = vcUuid;
    contentObject["state"] = "On";
    contentObject["owned_by"] = owner;
    
    postContent = JSON.stringify(contentObject);
    System.log("JSON: " + postContent);
    
    // (Rest Operation, Params, Content, Auth Token)
    var ciResponse = System.getModule("au.com.cs.example").executeOp(opCI,null,postContent,null) ;
    
    try{
    	var cmdbCI = JSON.parse(ciResponse);
    } catch (ex) {
    	throw ex + " failed to parse ServiceNow CMDB response";
    }
    
    serviceNowSysId = cmdbCI['result']['sys_id'];
  5. Erstellen Sie mithilfe der Ausgabe aus dem untergeordneten Workflow unter Verwendung der vorhandenen customProperties ein Eigenschaftenobjekt und überschreiben Sie die Eigenschaft serviceNowSysId mit dem Wert aus ServiceNow. Diese eindeutige ID wird in der CMDB verwendet, um eine Instanz beim Löschen als veraltet zu kennzeichnen.

Ergebnisse

Automation Assembler wurde erfolgreich in ITSM-Lösung ServiceNow integriert.