À l'aide de workflows vRealize Orchestrator hébergés, vous pouvez intégrer vRealize Automation Cloud Assembly à ServiceNow à des fins de conformité du système ITSM.

Les utilisateurs en entreprise intègrent généralement leur plate-forme Gestion du cloud à une plate-forme de gestion des services informatiques (ITSM) et de base de données de gestion des configurations (CMDB) à des fins de conformité. Dans cet exemple, vous pouvez intégrer vRealize Automation Cloud Assembly à ServiceNow pour CMDB et ITSM à l'aide de workflows vRealize Orchestratorhébergés. Lors de l'utilisation d'intégrations et de workflows vRealize Orchestrator, les balises de capacité sont particulièrement utiles si vous disposez de plusieurs instances pour différents environnements. Pour plus d'informations sur les balises de capacité, reportez-vous à la section Utilisation de balises de capacité dans vRealize Automation Cloud Assembly.
Note : Vous pouvez également intégrer ServiceNow à vRealize Automation Cloud Assembly à l'aide de scripts d'action d'extensibilité. Pour plus d'informations sur l'intégration de ServiceNow à l'aide de scripts d'action d'extensibilité, reportez-vous à la section Intégration de Cloud Assembly à ServiceNow à l'aide d'actions d'extensibilité.

Dans cet exemple, l'intégration de ServiceNow est composée de trois workflows de niveau supérieur. Chaque workflow dispose de ses propres abonnements afin que vous puissiez mettre à jour et itérer chaque composant individuellement.

  • Point d'entrée de l'abonnement aux événements - Journalisation de base, identifie l'utilisateur demandeur et la machine virtuelle vCenter, le cas échéant.
  • Workflow d'intégration - Répartit les entrées d'objets et de flux dans des workflows techniques, et gère la journalisation, les propriétés et les mises à jour de sortie.
  • Workflow technique - Intégration du système en aval pour l'API ServiceNow afin de créer l'API IaaS de la CMDB, de la CI, des CR et de vRealize Automation Cloud Assembly avec des propriétés de machine virtuelle supplémentaires, exclues de la charge utile.

Conditions préalables

  • Un environnement vRealize Orchestrator autonome ou en cluster.
  • Une intégration de vRealize Orchestrator dans vRealize Automation Cloud Assembly. Pour plus d'informations sur l'intégration d'un dispositif vRealize Orchestrator autonome à vRealize Automation Cloud Assembly, reportez-vous à la section Configurer une intégration de vRealize Orchestrator dans Cloud Assembly.

Procédure

  1. Créez et enregistrez un fichier de configuration dans vRealize Orchestrator, qui contient une configuration commune utilisée dans plusieurs workflows.
  2. Enregistrez le jeton de l'API de vRealize Automation Cloud Assembly dans le même emplacement que le fichier de configuration de l'étape 1.
    Note : Le jeton de l'API de vRealize Automation Cloud Assembly a une date d'expiration.
  3. Créez un workflow dans vRealize Orchestrator, avec l'élément de script fourni. Ce script fait référence à un hôte REST et le localise. Il normalise également les actions REST qui utilisent un paramètre facultatif d'un jeton, ajouté sous la forme d'un en-tête d'autorisation supplémentaire.
    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"];

    Ce script envoie la sortie cpuCount et memoryMB au workflow parent et met à jour les propriétés customProperties existantes. Ces valeurs peuvent être utilisées dans les workflows suivants lors de la création de la CMDB.

  4. Ajoutez l'élément de script Créer une CI de CMDB ServiceNow à votre workflow. Cet élément localise l'hôte REST ServiceNow à l'aide de l'élément de configuration, crée une opération REST pour la table cmdb_ci_vmware_instance, crée une chaîne d'objet de contenu basée sur les entrées de workflow pour les données de publication et génère le paramètre sys_id renvoyé.
    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. En utilisant le résultat du workflow enfant, créez un objet de propriétés à l'aide de l'élément customProperties existant et remplacez la propriété serviceNowSysId par la valeur obtenue de ServiceNow. Cet ID unique est utilisé dans la CMDB pour marquer une instance comme ayant été supprimée lors de la destruction.

Résultats

vRealize Automation Cloud Assembly est correctement intégré au système ITSM ServiceNow. Pour plus d'informations sur la façon dont vous pouvez utiliser les workflows pour intégrer ServiceNow dans vRealize Automation Cloud Assembly, reportez-vous à la section Extension de Cloud Assembly avec vRealize Orchestrator pour l'intégration de ServiceNow.