OCI 사용자정의 이미지 생성 및 Export/Import

OCI 사용자정의 이미지 생성 및 Export/Import

이번 Livelog에서는 OCI에서 사용자정의 이미지(Cumstom Image)를 만들고 이 이미지를 다른 OCI 계정에 전달하는 과정을 소개합니다. 이번 Livelog는 OCI 계정이 준비된 상태고, OCI 기본설정(사용자, 그룹, Policy, Compartment, VCN)이 준비된 상태를 가정합니다. 현재 OCI 계정과 기본 환경 구성이 안된 상태라면 다음 두 개 Livelog를 참조하여 사전 준비를 먼저 진행해 주시기 바랍니다.

  • 아래 이미지를 클릭하면 해당 Livelog로 이동합니다.
Livelog1: OCI 계정 생성 Livelog2: OCI 기본 설정

Livelog는 동영상 데모를 중심으로 작성된 콘텐츠입니다. Livelog는 Youtube에 배포된 동영상과 블로그 문서로 구성됩니다. Livelog의 블로그 문서는 동영상을 진행하기 위한 보조 정보를 중심으로 작성됩니다.

OCI 용어 정리

이번 LiveLog에서는 다음과 같은 OCI 용어를 사용합니다.

  • Region(리전): OCI를 구성하는 데이터 센터의 지역 거점. 1개 혹은 3개 AD로 구성
  • Availability Domain(AD): 완전 독립적인 데이터 센터. 1개 혹은 3개 그룹으로 리전 구성
  • Shape(구성): Compute 인스턴스에 할당될 CPU와 메모리 크기를 지정하는 유형.
    • AWS의 Type에 해당
  • Image(이미지): VM(가상머신)의 운영 체제 및 기타 소프트웨어를 정의하는 가상 하드 드라이브 템플릿으로, VM이 프로비저닝될 때, VM의 Boot Volume에 지정한 이미지가 복사됨. OCI는 3 가지 유형의 이미지 제공
    • 플랫폼 이미지
    • OCI 이미지
    • 파트너 이미지
  • Object Storage(오브젝트 스토리지): AWS S3에 대응되는 OCI 스토리지 서비스입니다. 데이터를 객체 형태로 저장하고 관리.
  • Bucket(버킷): 데이터와 파일을 저장하기 위해 오브젝트 스토리지에서 사용하는 논리적 그룹 단위. 버킷에 포함될 객체수에는 제약이 없음.

LiveLog 핵심 주제: Custom Image

사용자정의 이미지 지원 운영체제

사용자정의 이미지 Export/Import를 지원하는 운영체제는 2021년 3월 31일 현재 다음과 같습니다.

  • Linux

    • Oracle Linux 6.x, 7.x, 8.x
    • CentOS 7, 8
    • Ubuntu 16.04 이후
  • windows

    • Windows Server 2012 Standard, Datacenter
    • Windows Server 2012 R2 Standard, Datacenter
    • Windows Server 2016 Standard, Datacenter
    • Windows Server 2019 Standard, Datacenter

사용자정의 이미지 제약사항

  • Boot Volume의 복사본
  • 운영체제 변경 사항, 소프트웨어 설치 및 설정 변경을 대상으로 함
  • Boot Voluem이 아닌 Block Volume의 데이터는 포함되지 않음
  • 사용자정의 이미지 생성시 소스 컴퓨트 인스턴스는 종료 됨
  • 사용자정의 이미지 최대 크기: 300GB
  • Windows 사용자정의 이미지는 테넌시 밖으로 이동 불가(MS 라이센스 위반)

실습 시나리오

이번 라이브로그에서는 다음과 같은 상황을 다룹니다.

  • A기업 서비스 개발팀은 클라우드 서비스로 OCI를 사용
  • 서비스 개발팀은 OCI를 개발 테넌시(OCI 계정)과 운영 테넌시로 구분하여 사용
  • 서비스 개발팀은 사용자정의 이미지(Custom Image)을 사용하여 리눅스 VM 관리 효율성 높임 편의성이 높임
  • 사용자정의 이미지(Custom Image)는 사용하는 VM의 소프트웨어 구성와 설정을 포함
  • 개발 테넌시에서 설정이 완료된 사용자정의 이미지를 운영 운영 테넌시로 전달
  • 운영 테넌시에서는 해당 사용자정의 이미지로 VM을 프로비저닝

이번 라이브로그에서는 이 상황에 대한 데모를 진행합니다.

실습 환경

이번 Livelog에서 사용하는 OCI Tenancy(계정) 정보는 다음과 같습니다.

  • OCI 소스 테넌시 명: taewandemo003
자원유형 대상자원 설명
OCI User developer01 개발자 유저
OCI Compartment demo
VCN demovcn Public Subnet-demovcn 서브넷

  • OCI 대상 테넌시 명: taewandemo004
자원유형 대상자원 설명
OCI User developer01 개발자 유저
OCI Compartment demo
VCN demovcn Public Subnet-demovcn 서브넷

이번 LiveLog는 2개의 OCI 테넌시를 이용하여 진행합니다.

현재 사용 가능한 OCI 테넌시가 1개라면 OCI 소스 테넌시와 OCI 대상 테넌시를 같은 것으로 같은 것으로 가정하고 진행할 수 있습니다.

실습 진행 절차

  1. [OCI 소스 테넌시] OCI Console로 로그인
  2. [OCI 소스 테넌시] OCI Linux VM 생성
    • cloud-init로 apache 서버 설치
    • cloud-init로 방화벽 오픈
  3. 브라우저 접근: OCI 소스 테넌시 VM의 아파치 서버
  4. [OCI 소스 테넌시] OCI 사용자정의 이미지 생성
  5. [OCI 소스 테넌시] OCI Object Storage에 버킷 생성(버킷 이름: custom-bucket)
  6. [OCI 소스 테넌시] OCI 사용자정의 이미지 내보내기
  7. [OCI 소스 테넌시] Object Storage의 PAR 생성
  8. [OCI 대상 테넌시] OCI 사용자정의 이미지 가져오기
  9. [OCI 대상 테넌시] OCI Linux VM 생성
  10. 브라우저 접근: OCI 대상 테넌시 VM의 아파치 서버

LiveLog 실습

OCI에서 사용자정의 이미지를 만들고 이 이미지를 다른 OCI 계정에 전달하는 과정을 실습으로 진행합니다.

[소스 테넌시]OCI Console 로그인

  • OCI Login: https://cloud.oracle.com
  • OCI 계정명 입력: taewandemo003
  • OCI 인증: OCI Direct Login
  • OCI User: developer01

[소스 테넌시]VM 배포 및 VM 변경

소스 테넌시의 VM을 다음과 같은 정보로 프로비저닝합니다.

항목 설정값 설명
Name linux-base-vm
Compartment demo
Availability Domain AD 1
Image Oracle Linux 7.9
VCN demovcn Public Subnet-demovcn
공용 IP 주소 공용 IPv4 주소 지정
SSH 키 추가 SSH 키 없음
Shape VM.Standard.E4.Flex OCPU: 1, Memory: 16GB

VM을 프로비저닝할 때 고급 옵션 텝에서 ‘Cloud-init 스크립트 붙여넣기‘을 클릭하고 cloud-init에 다음 스크립트를 등록합니다.

#!/bin/bash
## Open 80 Port
sudo firewall-cmd --zone=public --permanent --add-port=80/tcp
sudo firewall-cmd --reload
## Install apache
sudo yum install -y httpd
## Enable Apache Service
sudo systemctl enable httpd
sudo systemctl restart httpd

[소스 테넌시]사용자 정의 이미지 생성

linux-base-vm‘로 부터 사용자정의 이미지를 생성합니다.

Compute 인스턴스를 사용자정의 이미지로 만들 때, 해당 인스턴스는 정지시키고 작업하는 것이 좋습니다. 컴퓨트 인스턴스가 실행 중인 상태에서 사용자정의 이미지 만들면, 해당 컴퓨트 인스턴스는 강제로 중지됩니다.

항목 설정값
구획(컴파트먼트) demo
이름 custom_linux_vm

[소스 테넌시]Object Storage에 버킷 생성

OCI 오브젝트 스토리지에 다음과 같은 정보로 버킷을 생성합니다.

항목 설정값
컴파트먼트(구획) demo
버킷 이름 custom_image
버킷 타입 표준(Standard)
암호화 오라클 관리 키를 사용하여 암호화

[소스 테넌시]OCI 사용자정의 이미지 내보내기

사용자정의 이미지를 다음과 같은 정보로 사용자정의 이미지를 오브젝트 스토리지에 내보냅니다.

항목 설정값
버킷 이름 cumstom_image
이미지 이름 exported_custom_linux_image
이미지 형식 OCI 파일과 QCOW2 이미지 및 OCI 메타데이타(.oci)

[소스 테넌시]Object Storage의 PAR 생성

대상 테넌시에서 접근할 수 있도록 오브젝트 스토리지에 내려보낸 사용자정의 이미지 파일의 사전 승인 요청(PAR, Pre-Authenticated Request)을 생성합니다. 그 사전 승인 요청의 URL을 기록해 놓습니다.

[대상 테넌시]OCI Console 로그인

  • OCI Login: https://cloud.oracle.com
  • OCI 계정명 입력: taewandemo004
  • OCI 인증: OCI Direct Login
  • OCI User: developer01

[대상 테넌시]OCI 사용자정의 이미지 가져오기

다음 정보와 사전 승인 요청 URL을 입력하고 사용자 정의 이미지를 가져옵니다.

항목 설정값
구획에 생성 demo
이름 custom_linux_image
운영체제 linux
이미지 유형 OCI

[대상 테넌시]OCI Linux VM 생성

대상 테넌시에서 VM을 다음과 같은 정보로 프로비저닝합니다.

항목 설정값 설명
Name
Compartment demo
Availability Domain AD 1
Image Custom_linux_image
VCN demovcn Public Subnet-demovcn
공용 IP 주소 공용 IPv4 주소 지정
SSH 키 추가 SSH 키 없음
Shape VM.Standard.E4.Flex OCPU: 1, Memory: 16GB

참고 문서

김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 빅데이터와 Machine Learning을 중점에 두고 있습니다.
E-mail: taewanme@gmail.com

이 저작물은 Oracle과 관계없이 개인으로서 개인의 시간을 할애하여 작성된 글 입니다. 본 글의 내용, 입장, 예측은 Oracle을 공식적으로 절대 대변하지 않습니다.