300x250
반응형
스프링 부트에서 오라클 클라우드 oci의 인스턴스 생성을 명령해보자
1. 인스턴스 생성
@Override
public Instance createInstance(String domain) {
/* 인스턴스 디테일 설정 */
LaunchInstanceDetails launchInstanceDetails = LaunchInstanceDetails.builder()
.availabilityDomain("...")
.compartmentId("...")
.shape("VM.Standard.E3.Flex")
.displayName(domain)
.createVnicDetails(CreateVnicDetails.builder()
.subnetId("...")
.build())
.metadata(new HashMap<java.lang.String, java.lang.String>() {
{
put("ssh_authorized_keys","...");
}
})
.shapeConfig(LaunchInstanceShapeConfigDetails.builder()
.ocpus(2f)
.memoryInGBs(8f)
.baselineOcpuUtilization(LaunchInstanceShapeConfigDetails.BaselineOcpuUtilization.Baseline18).build())
.sourceDetails(InstanceSourceViaImageDetails.builder()
.imageId("...")
.build())
.build();
/* 리퀘스트 만들기 */
LaunchInstanceRequest launchInstanceRequest = LaunchInstanceRequest.builder()
.launchInstanceDetails(launchInstanceDetails)
.build();
/* 리퀘스트 보내서 결과 받기 */
LaunchInstanceResponse response = computeClient.launchInstance(launchInstanceRequest);
log.info("oci createInstance success : instance name " +response.getInstance().getDisplayName());
return response.getInstance();
}
인스턴스 디테일에는 더 많은 옵션을 설정할 수 있지만 여기서는 필요한 최소한의 것만 설정했다.
리퀘스트를 보내면 oci에서 새로운 인스턴스를 생성한 후 인스턴스 정보를 리스폰스로 보내준다.
리스폰스로 들어온 인스턴스로 새로 생성된 인스턴스의 정보를 확인할 수 있는데
여기에 ip 정보는 없으므로 따로 리퀘스트를 보내 찾아야 한다
이때 리스폰스로 받은 인스턴스에서 인스턴스 ocid를 이용할 수 있다.
2. public ip 가져오기
2-1. instance id로 vnic attachment 찾아오기
@Override
public List<VnicAttachment> getVnicList(String instanceId) {
ListVnicAttachmentsRequest listVnicAttachmentsRequest = ListVnicAttachmentsRequest.builder()
.compartmentId("...")
.availabilityDomain("...")
.instanceId(instanceId)
.build();
ListVnicAttachmentsResponse response = computeClient.listVnicAttachments(listVnicAttachmentsRequest);
return response.getItems();
}
인스턴스의 ocid로 해당 인스턴스의 vnic attachment 목록을 받아올 수 있다.
여기에서 vnic id를 추출해서 다시 vnic를 받아온다.
2-2. vnic id로 vnic 찾아오기
@Override
public Vnic getVnic(String vnicId) {
GetVnicRequest getVnicRequest = GetVnicRequest.builder()
.vnicId(vnicId)
.build();
GetVnicResponse response = vnClient.getVnic(getVnicRequest);
return response.getVnic();
}
2-3. vnic에서 public id 찾기
@Override
public String getIp(String ocid) {
// instance id로 vnic attachment 찾아오기
List<VnicAttachment> vnicList = ociService.getVnicList(ocid);
String vnicId = vnicList.get(0).getVnicId();
// vnic id로 vnic 찾아오기
Vcni vcni = ociService.getVnic(vnicId);
String publicIp = vcni.getPublicIp();
// public ip 리턴
return vcni.getPublicIp();
}
참고
https://docs.oracle.com/en-us/iaas/api/#/en/iaas/20160918/Instance/LaunchInstance
https://docs.oracle.com/en-us/iaas/api/#/en/iaas/20160918/VnicAttachment/ListVnicAttachments
https://docs.oracle.com/en-us/iaas/api/#/en/iaas/20160918/Vnic/GetVnic
300x250
반응형
'IT > 자바, 스프링' 카테고리의 다른 글
Access-Control-Allow-Origin 여러 도메인을 허가해 줄 수 없을까? (0) | 2022.02.22 |
---|---|
자바 for문 돌리는 중 ConcurrentModificationException 에러 (0) | 2022.01.13 |
스프링 부트에서 비동기로 작업하기 (0) | 2022.01.10 |
스네이크 케이스로 들어온 필드명을 카멜 케이스로 받기 (0) | 2022.01.06 |
스프링 프로젝트 api에 context path 설정하기 ( /api/v1 ) (0) | 2021.12.17 |