Door vRealize Orchestrator gehoste werkstromen stellen u in staat om Cloud Assembly met ServiceNow te integreren voor ITSM-compliance.

De ServiceNow-integratiestroom doorloopt verschillende Cloud Assembly-, vSphere-, vRealize Orchestrator- en ServiceNow-services en -API's.

Zakelijke gebruikers integreren voor compliance doorgaans hun cloudbeheerplatform met een IT Service Management- (ITSM) en Configuration Management Database-platform (CMDB). Overeenkomstig dit voorbeeld kunt u Cloud Assembly met ServiceNow voor CMDB en ITSM integreren met door vRealize Orchestrator gehoste werkstromen. Wanneer u met vRealize Orchestrator-integraties en -werkstromen werkt, zijn capaciteitstags vooral handig als u meerdere instanties voor verschillende omgevingen hebt. Zie Capaciteitstags in Cloud Assembly gebruiken voor meer informatie over capaciteitstags.
Opmerking: U kunt ServiceNow ook met Cloud Assembly integreren met behulp van uitbreidbaarheidsactiescripts. Zie Hoe integreer ik Cloud Assembly met ServiceNow met behulp van uitbreidbaarheidsacties voor informatie over het integreren van ServiceNow met behulp van uitbreidbaarheidsactiescripts.

In dit voorbeeld is de ServiceNow-integratie samengesteld uit drie werkstromen op het hoogste niveau. Elke werkstroom heeft eigen abonnementen, zodat u elk onderdeel afzonderlijk kunt bijwerken en herhalen.

  • Toegangspunt van gebeurtenisabonnement - Basislogboekregistratie identificeert de aanvrager en vCenter VM, indien van toepassing.
  • Integratiewerkstroom - Scheidt objecten en levert invoer voor de technische werkstroom, zorgt voor updates van de logboekregistratie, eigenschappen en uitvoer.
  • Technische werkstroom - Voer systeemintegratie voor ServiceNow API verderop in het proces uit om de CMDB CI, CR en Cloud Assembly IaaS API te maken met aanvullende eigenschappen voor de virtuele machine buiten de lading.

Voorwaarden

Procedure

  1. Maak een configuratiebestand dat een algemene configuratie bevat die in meerdere werkstromen wordt gebruikt, en sla het in vRealize Orchestrator op.
  2. Sla uw Cloud Assembly API-token op dezelfde locatie op als het configuratiebestand uit stap 1.
    Opmerking: Het Cloud Assembly API-token heeft een vervaldatum.
  3. Maak een werkstroom in vRealize Orchestrator met het opgegeven scriptelement. Dit script verwijst naar een REST-host en zoekt ernaar. Ook worden er REST-acties gestandaardiseerd die gebruikmaken van een optionele parameter van een token, dat als extra autorisatiekoptekst is toegevoegd.
    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"];

    Dit script verzendt de uitvoer cpuCount en memoryMB naar de bovenliggende werkstroom en werkt de bestaande customProperties-eigenschappen bij. Deze waarden kunnen worden gebruikt in volgende werkstromen wanneer de CMDB wordt gemaakt.

  4. Voeg het ServiceNow CMDB-scriptelement 'CI maken' toe aan uw werkstroom. Dit element zoekt de ServiceNow REST-host met behulp van het configuratie-item, maakt een REST-bewerking voor de tabel cmdb_ci_vmware_instance, maakt een tekenreeks met een inhoudsobject gebaseerd op de werkstroominvoer voor post-gegevens en voert de uitvoer van de geretourneerde sys_id uit.
    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. Maak met behulp van de uitvoer van de onderliggende werkstroom een eigenschappenobject met behulp van de bestaande customProperties en vervang de eigenschap serviceNowSysId door de waarde van ServiceNow. Deze unieke id wordt in de CMDB gebruikt om een instantie als buiten gebruik gesteld te markeren bij vernietiging.

resultaten

Cloud Assembly is geïntegreerd met ITSM ServiceNow. Zie Extending Cloud Assembly with vRealize Orchestrator for ServiceNow Integration voor meer informatie over hoe u werkstromen kunt gebruiken om ServiceNow in Cloud Assembly te integreren.