가상 서버 응답 프로세서 예
클라우드 프로비저닝 및 거버넌스에서 기본적으로 사용할 수 있는 Create_Virtual_Server_Response_Processor 스크립트는 AWS 가상 머신 CI 생성을 처리하는 응답 프로세서입니다.
가상 서버 만들기
가상 서버 자원 블록에서는 기본적으로 Create_Virtual_Server_Response_Processor 자원 프로세서 스크립트를 사용할 수 있습니다. 이 작업은 새 가상 서버를 구축할 때 가상 머신 인스턴스[cmdb_ci_vm_instance] 테이블에 가상 서버 기록을 만드는 것입니다.
function processResponse(response, cloudServiceAccountId, ldc, correlationId,step, requestorContext) {
이는 클라우드 제공자에서 응답을 가져오며 시스템에서 만들 수 있는 새 CI에 필요한 계정 ID와 같은 중요한 정보를 가져옵니다. 모든 응답 프로세서에는 이러한 매개변수가 모두 필요합니다.
10번 줄은 시스템에서 처리할 수 있도록 JSON에 대한 응답을 구문 분석합니다. 이 정보는 vmResponse 변수에 보관됩니다.
var vmResponse = global.JSON.parse(response);
응답 프로세서를 만들거나 편집할 때마다 CI 유형에 필요한 입력 사항을 알고 있어야 합니다. 11번 줄은 CMDB 기록에 필요한 입력 중 하나인 하드웨어 ID를 처리합니다.
var hardwareId = vmResponse.hardwareId;
39번 줄은 시스템에서 새 가상 서버와 관련 CI를 식별하는 데 필요한 정보를 보여주며 CMDB에 정보를 넣을 수 있습니다. 이 경우 서비스 계정 개체 ID는 가상 서버와 연결된 계정을 식별하고, 데이터센터 개체 ID는 가상 서버가 있는 데이터센터를 식별하고, 가상 머신 인스턴스 개체 ID가 가상 서버를 식별합니다. 이 식별 코드 블록은 중복 CI를 만들지 못하게 합니다.
var vmInfo = {
"cmdb_ci_vm_instance": {
"validator": "virtual_machine_create_update_validator",
"validator_overrides": {},
"identification": {
"cmdb_ci_cloud_service_account": {
"criterion": {
"object_id": cloudServiceAccountId
}
},
"cmdb_ci_aws_datacenter": {
"criterion": {
"object_id": ldc
}
},
"cmdb_ci_vm_instance": {
"criterion": {
"object_id": vmResponse.nodeId
}
}
},속성은 cmdb_ci_vm_instance 테이블의 필드에 채워집니다. 이러한 속성은 61번 줄에 정의되어 있습니다.
"attributes": {
"name": vmResponse.nodeName,
"object_id": vmResponse.nodeId,
"state": status_map[vmResponse.state],
"dns_suffix": vmResponse.dnsSuffix,
"cpus": vmCPUs,
"memory": vmMemory,
"disks": vmResponse.volumes.length,
"disks_size": "",
"nics": vmResponse.networkInterfaces.length,
"terminated_on": "",
"termination_protection": "",
"ip_address": vmPubIPAddr,
"assigned_to": reqContext.userId,
"assignment_group": reqContext.groupId
},
다른 CI에 대한 참조도 응답 프로세서에 포함 시킬 수 있습니다. 이 경우 가상 서버가 기반으로 하는 OS 템플릿은 먼저 실제 OS 템플릿과 함께 서비스 계정의 개체 ID와 데이터센터를 식별하여 식별됩니다.
"references": {
"cmdb_ci_os_template": {
"identification": {
"cmdb_ci_cloud_service_account": {
"criterion": {
"object_id": cloudServiceAccountId
}
},
"cmdb_ci_aws_datacenter": {
"criterion": {
"object_id": ldc
}
},
"cmdb_ci_os_template": {
"criterion": {
"object_id": imageIdTrim
}
}
},다음 코드 블록은 이 정보를 가상 서버 CMDB 기록으로 채울 수 있도록 OS 이미지의 개체 ID를 속성 목록에 추가합니다.
"attributes": {
"object_id": imageIdTrim
}
이 코드 블록은 계산 템플릿(하드웨어 종류)에서 추가 식별을 수행한 다음 속성에 추가합니다.
"cmdb_ci_compute_template": {
"identification": {
"cmdb_ci_cloud_service_account": {
"criterion": {
"object_id": cloudServiceAccountId
}
},
"cmdb_ci_aws_datacenter": {
"criterion": {
"object_id": ldc
}
},
"cmdb_ci_compute_template": {
"criterion": {
"object_id": vmResponse.hardwareId
}
}
},
"attributes": {
"object_id": vmResponse.hardwareId,
"name": vmResponse.hardwareId
}
}추가 코드 섹션은 네트워크 인터페이스와의 관계를 만들고 가상 서버에 연결된 모든 저장소를 식별합니다.
이 필수 코드 블록은 데이터를 CMDB에 푸시하고 JSON 문자열을 반환합니다.
cloudModelString.push(vmInfo);
return global.JSON.stringify(cloudModelString);