TheKoguryo's 기술 블로그

 Version 2024.04.01

15.1 Resource Manager 사용하기

Resource Manager는 OCI 자원 Provisioning을 자동화하는 기능으로 Terraform Configuration을 등록해서 실행하는 서비스입니다. 클라이언트에 Terraform을 설치하는 것이 아닌, Resource Manager에서 Terraform Configuration 파일들을 등록해서 OCI 콘솔 또는 OCI CLI로 실행할 수 있습니다.

Terraform CLI를 별도로 설치할 필요가 없고, Terraform 실행 State를 Resource Manager가 관리한다는 차이가 있습니다.

  • Stack

    스택은 Terraform Configuration 묶음을 등록하여 생성하는 Provisioning 단위입니다.

  • Job

    Job은 스택으로 등록된 Terraform Configuration의 실행 작업이며, Terraform에서 경험한 것 처럼 Terraform Plan, Apply, Destroy이 실행되는 작업입니다.

Resource Manager 사용하기

  1. Terraform Configuration 만들기 14.2.2 Terraform Configurations 작성하기에서 사용한 VCN 만들기 설정파일을 그대로 사용해 보겠습니다. 다만 차이는 oci provider에서 region만 필수 필드이고, 나머지 항목들은 필수가 아닙니다. 등록한 Resource Manager의 Tenancy에서 실행되고, 인증받은 유저가 실행하기 때문에 나머지 항목은 필수가 아닙니다.

    • provider.tf

      variable "region" {}
      
      provider "oci" {
        region           = "${var.region}"
      }
      
    • vcn.tf

      variable "compartment_ocid" {}
      
      resource "oci_core_virtual_network" "vcn1" {
        cidr_block     = "10.0.0.0/16"
        dns_label      = "vcn1"
        compartment_id = "${var.compartment_ocid}"
        display_name   = "vcn1"
      }
      
      output "vcn1_ocid" {
        value = ["${oci_core_virtual_network.vcn1.id}"]
      }
      
  2. Terraform Configuration을 Resource Manager 용으로 변경하기

    • OCI Console에서 Resource Manager를 사용하기 때문에 UI가 존재합니다. Terraform 설정값을 UI에서 설정할 수 있게 확장할 수 있는 스키마를 제공합니다.

    • provider.tf

      variable "region" {}
      
      provider "oci" {
        region           = "${var.region}"
      }
      
    • vcn.tf 변경분

      variable "compartment_ocid" {}
      variable "vcn_name" {}
      variable "vcn_dns_label" {}
      variable "vcn_cidr_block" {}
      
      resource "oci_core_virtual_network" "vcn1" {
        cidr_block     = var.vcn_cidr_block
        dns_label      = var.vcn_dns_label
        compartment_id = var.compartment_ocid
        display_name   = var.vcn_name
      }
      
      output "vcn1_ocid" {
        value = ["${oci_core_virtual_network.vcn1.id}"]
      }
      
    • schema.yaml

      Stack 설명구 추가, 변수 타이틀, 설명문 추가, 변수 UI 배열 구문 등을 아래와 같이 추가할 수 있습니다.

      title: "Resource Manager Example VCN by TheKoguryo"
      description: "Resource Manager로 VCN을 만드는 예제입니다."
      schemaVersion: 1.0.0
      version: "20220119"
      
      locale: "en"
      groupings:
        - title: "Basic Hidden"
          visible: false
          variables:
          - compartment_ocid
          - tenancy_ocid
          - region
      
        - title: "Basic Configuration"
          variables:
          - vcn_name
          - vcn_dns_label
      
        - title: "Configure VCN"
          variables: 
          - vcn_cidr_block    
      
      variables:
        vcn_name:
          type: string
          title: VCN Name
          required: true
          default: example_vcn
      
        vcn_dns_label:
          type: string
          title: VCN DNS Label
          description: "Only letters and numbers, starting with a letter. 15 characters max." 
          required: true
          default: examplevcn  
      
        vcn_cidr_block:
          type: list(string)
          title: VCN IPv4 CIDR Block
          description: "Example: 10.0.0.0/16"    
          required: true    
          default: ["10.0.0.0/16"]    
      
  3. OCI 콘솔에서 내비게이션 메뉴의 Developer Services > Resource Manager > Stacks을 클릭합니다.

  4. Create Stack 을 클릭합니다.

  5. Stack 생성 설정

    • 첫 번째 My Configuration으로 작성한 파일이 위치한 폴더를 Drop a folder로 드래그 앤 드랍합니다.

      image-20220119221634743

    • 설정 로딩이 되어 Stack의 기본 설명이 아래와 같이 보이게 됩니다.

      image-20220119222129015

    • 다음 페이지로 넘어갑니다.

  6. 변수 값 입력

    작성한 schema.yaml을 바탕으로 그림과 같이 표현됩니다.

    image-20220119222309261

  7. 값을 변경해 보고 리뷰후 Stack을 생성합니다.

    image-20220119222633756

  8. terraform plan 명령처럼 Plan 버튼을 클릭해봅니다.

  9. Terraform CLI에서 terraform plan을 수행했던 것과 동일한 결과가 로그로 확인됩니다.

    image-20220119223001069

  10. 다시 Stack 상세화면으로 돌아가 Apply를 클릭하여 실행해 봅니다.

  11. 생성이 성공하면 Resouces > Job Resources 에서 결과물로 생성된 자원을 확인할 수 있습니다.

    image-20220119223541535

  12. 링크를 따라 가면 실제 VCN이 생성된 것을 확인할 수 있습니다.

  13. Stack 상세 정보로 돌아가 Destroy 버튼을 클릭합니다.

  14. 실행이 끝나고 VCN 리스트 화면으로 이동해 보면, 앞서 생성된 example_vcn이 삭제된 것을 알수 있습니다.

  15. Stack의 지금까지 Plan, Apply, Destroy를 실행한 모든 작업 결과 내역은 Stack 상세 화면에서 볼 수 있습니다.

    image-20220119224136146



이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.

Last updated on 19 Jan 2022