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

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 Cloud Assembly mit ServiceNow für CMDB und ITSM unter Verwendung von gehosteten vRealize Orchestrator-Workflows integrieren. Bei Verwendung von vRealize 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 Cloud Assembly.
Hinweis: Sie können ServiceNow unter Verwendung von Erweiterbarkeitsaktionsskripts auch mit Cloud Assembly integrieren. Informationen zum Integrieren von ServiceNow mithilfe von Erweiterbarkeitsaktionsskripts finden Sie unter Vorgehensweise zum Integrieren von Cloud Assembly 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 Cloud Assembly-IaaS-API mit zusätzlichen VM-Eigenschaften außerhalb der Nutzlast.

Voraussetzungen

Prozedur

  1. Erstellen und speichern Sie in vRealize Orchestrator eine Konfigurationsdatei, die eine allgemeine, in mehreren Workflows verwendete Konfiguration enthält.
  2. Speichern Sie Ihr Cloud Assembly-API-Token am selben Speicherort wie die Konfigurationsdatei aus Schritt 1.
    Hinweis: Das Cloud Assembly-API-Token weist ein Ablaufdatum auf.
  3. Erstellen Sie mit dem bereitgestellten Skriptelement einen Workflow in vRealize 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

Cloud Assembly wurde erfolgreich mit ITSM-Lösung ServiceNow integriert. Weitere Informationen zur Verwendung von Workflows für die Integration von ServiceNow in Cloud Assembly finden Sie im Blogbeitrag Extending Cloud Assembly with vRealize Orchestrator for ServiceNow Integration, der die Erweiterung von Cloud Assembly mit vRealize Orchestrator für die ServiceNow-Integration behandelt.