Automation Orchestrator でホストされたワークフローを使用して、ITSM のコンプライアンスのために Automation Assembler を ServiceNow と統合することができます。
エンタープライズ ユーザーは、コンプライアンスを実現するために、一般的に Cloud Management Platform と IT サービス管理 (ITSM) および構成管理データベース (CMDB) プラットフォームを統合します。この例のとおりに、
Automation Orchestrator がホストされているワークフローを使用して、
Automation Assembler を CMDB と ITSM 用に ServiceNow と統合できます。
Automation Orchestrator 統合とワークフローを使用する際に、環境ごとに複数のインスタンスがある場合は、機能タグが特に便利です。機能タグの詳細については、
Automation Assembler での機能タグの使用を参照してください。
この例では、ServiceNow の統合は 3 つの最上位レベルのワークフローで構成されます。各ワークフローには独自のサブスクリプションがあるため、各コンポーネントを個別に更新および反復処理できます。
- イベント サブスクリプション エントリ ポイント - 基本ログは、要求しているユーザーと vCenter Server 仮想マシン(該当する場合)を識別します。
- 統合ワークフロー - オブジェクトを分離し、テクニカル ワークフローに入力を取り入れて、ログ、プロパティ、出力の更新を処理します。
- テクニカル ワークフロー - ServiceNow API のダウンストリーム システム統合により、ペイロードの外部に仮想マシンのプロパティを追加して、CMDB CI、CR、および Automation Assembler IaaS API を作成できます。
手順
- Automation Orchestrator で、複数のワークフローで使用される共通の構成を含む構成ファイルを作成して保存します。
- 手順 1 の構成ファイルと同じ場所に Automation Assembler API トークンを保存します。
注:
Automation Assembler API トークンには有効期限があります。
- 指定したスクリプト要素を使用して、Automation 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 CMDB CI の作成スクリプトをワークフローに追加します。この要素は、構成アイテムを使用して ServiceNow REST ホストを特定し、cmdb_ci_vmware_instance テーブルの REST 操作を作成します。さらに、POST データのワークフロー入力に基づいてコンテンツ オブジェクトの文字列を作成して、返された 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 の値で上書きします。この一意の ID は、インスタンスが破棄されたときに使用中止としてマークするために CMDB で使用されます。