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

Le flux d'intégration ServiceNow passe par plusieurs services et API Cloud Assembly, vSphere, vRealize Orchestrator et ServiceNow.

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 Automation Assembler à ServiceNow pour CMDB et ITSM à l'aide de workflows Automation Orchestratorhébergés. Lors de l'utilisation d'intégrations et de workflows Automation 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 Automation Assembler.
Note : Vous pouvez également intégrer ServiceNow à Automation Assembler à 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 Automation Assembler à 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 Automation Assembler avec des propriétés de machine virtuelle supplémentaires, exclues de la charge utile.

Conditions préalables

Procédure

  1. Créez et enregistrez un fichier de configuration dans Automation Orchestrator, qui contient une configuration commune utilisée dans plusieurs workflows.
  2. Enregistrez le jeton de l'API de Automation Assembler dans le même emplacement que le fichier de configuration de l'étape 1.
    Note : Le jeton de l'API de Automation Assembler a une date d'expiration.
  3. Créez un workflow dans Automation 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

Automation Assembler est correctement intégré au système ITSM ServiceNow.