С помощью размещенных рабочих процессов vRealize Orchestrator службу Cloud Assembly можно интегрировать с решением ServiceNow для обеспечения соответствия нормативным требованиям в отношении управления ИТ-службами (ITSM).
В корпоративной среде платформа управления облаком часто интегрируется с платформой управления ИТ-службами (ITSM) и базой данных управления конфигурациями (CMDB) для соответствия нормативным требованиям. Следуя данному примеру, можно интегрировать службу
Cloud Assembly с решением ServiceNow для CMDB и ITSM с помощью размещенных рабочих процессов
vRealize Orchestrator. При использовании интеграций и рабочих процессов
vRealize Orchestrator теги возможностей могут быть особенно полезны в случаях, когда вы имеете дело с несколькими экземплярами для разных сред. Дополнительные сведения о тегах возможностей см. в разделе
Использование тегов возможностей в Cloud Assembly.
В этом примере интеграция с решением ServiceNow состоит из трех рабочих процессов высшего уровня. У каждого рабочего процесса есть свои подписки, что позволяет выполнять обновление и итерацию для каждого компонента по отдельности.
- Точка входа подписки на событие —«Базовое ведение журнала» — идентифицирует пользователя, отправившего запрос, и виртуальную машину vCenter (при необходимости).
- Рабочий процесс интеграции разделяет объекты и подает входные данные в технический рабочий процесс, обрабатывает журналы, свойства и обновления выходных данных.
- Технический рабочий процесс осуществляет интеграцию нисходящих систем для API-интерфейса решения ServiceNow и создает API-интерфейс инфраструктуры как услуги Cloud Assembly, базы данных управления конфигурациями, непрерывной интеграции и непрерывного реагирования с дополнительными свойствами виртуальной машины за пределами полезных данных.
Процедура
- Создайте и сохраните в службе vRealize Orchestrator файл конфигурации, содержащий общую конфигурацию, которая используется в нескольких рабочих процессах.
- Сохраните маркер API-интерфейса Cloud Assembly в том же расположении, что и файл конфигурации на шаге 1.
Примечание: Срок действия маркера API-интерфейса
Cloud Assembly ограничен.
- Создайте рабочий процесс в службе vRealize Orchestrator с использованием предоставленного элемента сценария. Этот сценарий ссылается на узел REST и определяет его расположение. Он также стандартизирует действия REST, в которых используется дополнительный параметр маркера, который добавляется в качестве заголовка дополнительной проверки подлинности.
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"];
Этот сценарий отправляет выходные значения cpuCount и memoryMB в родительский рабочий процесс и обновляет существующие свойства customProperties. Эти значения можно использовать в последующих рабочих процессах при создании базы данных управления конфигурациями (CMDB).
- Добавьте элемент сценария создания непрерывной интеграции базы данных управления конфигурациями ServiceNow в рабочий процесс. Этот элемент находит узел REST для ServiceNow, используя элемент конфигурации, создает операцию REST для таблицы cmdb_ci_vmware_instance, создает строку объекта содержимого на основе входных данных рабочего процесса для пост-данных и выводит возвращенное значение sys_id.
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'];
- Используя выходные данные дочернего рабочего процесса, создайте объект свойства на основе существующих значений customProperties и перезапишите свойство serviceNowSysId, используя значение, полученное из ServiceNow. Этот уникальный идентификатор используется в базе данных управления конфигурациями для маркировки удаляемого экземпляра как списанного.