[OCI] 자원 관리자를 사용하여 MYSQL Database Service를 작성해 보았습니다 (2020/11/15)

이 기사에서는 OCI의 관리형 Terraform 환경인 자원 관리자를 사용하여 MySQL Database Service를 작성해 보았음을 소개합니다.

리소스 관리자란?



Oracle Cloud Infrastructure 리소스를 프로비저닝하는 프로세스를 자동화할 수 있는 Oracle Cloud Infrastructure 서비스
Infrastructure-as-code 모델을 사용하여 리소스를 설치, 구성 및 관리하는 데 도움이되는 Terraform 관리 환경

자원 관리자 기능



리소스 매니저는 다음과 같은 특징, 기능이 있습니다 (2020/11/15 시점)
- 인프라 자동화 및 표준화, 환경 복제를 용이하게 수행
- Terraform 엔진의 완전 관리 서비스
- 지정된 구획의 리소스를 Terraform 구성 파일 생성(Resource Discovery)
- GitLab에서 관리되는 Terraform 구성 파일에서 리소스 관리자 스택 생성(구성 소스 공급자)
- 스택의 마지막에 실행된 구성과 실제(현재) 인프라 상태 간의 차분 추출(드리프트 검출)
- 샘플 구성을 사용한 환경 구축
- 사용 가능한 Terraform 형식은 v0.11/v0.12/v0.13

다음 샘플은 Terraform v0.12 형식으로 설명되어 있습니다.

MYSQL Database Service 생성 샘플



사용하는 변수


  • mysql_configuration_id : MYSQL Database Service의 구성 ID
  • mysql_password : 관리자 사용자 비밀번호
  • mysql_shape : MYSQL Database Service에서 이용하는 셰이프
  • privateSubnet_id : 서브넷 OCID

  • 지정한 이름


  • admin_username : 관리자 사용자 이름 (admin)
  • hostname_label/display_name : 호스트 이름 (mysql1)

  • 그 외에는 기본 설정 지정



    mysql.tf
    resource oci_mysql_mysql_db_system export_MySQL1 {
      admin_password      = var.mysql_password
      admin_username      = "admin"
      availability_domain = data.oci_identity_availability_domain.TGjA-AD-1.name
      backup_policy {
        is_enabled        = "true"
        retention_in_days = "7"
        window_start_time = "00:00"
      }
      compartment_id          = var.compartment_ocid
      configuration_id        = var.mysql_configuration_id
      data_storage_size_in_gb = "50"
      display_name = "MySQL1"
      fault_domain = "FAULT-DOMAIN-1"
      hostname_label = "mysql1"
      maintenance {
        window_start_time = "WEDNESDAY 04:22"
      }
    #  mysql_version = "8.0.22-u2-cloud"
      port          = "3306"
      port_x        = "33060"
      shape_name    = var.mysql_shape
      state     = "ACTIVE"
      subnet_id = var.privateSubnet_id
    
      lifecycle {
        ignore_changes = [admin_password, admin_username]
      }
    }
    data oci_identity_availability_domain export_TGjA-AD-1 {
      compartment_id = var.compartment_ocid
      ad_number      = "1"
    }
    

    샘플 환경 만들기



    MySQL Database Service를 빌드하는 예로 다음 구성을 만듭니다.

    컴퓨팅 인스턴스에 nginx와 php를 설치하고 wordpress 모듈을 배포하고 MySQL Database Service에 Database와 사용자를 만듭니다.
    Terraform 구성 파일은 github에서 다운로드할 수 있습니다.

    환경 구축 실행



    1. 웹 콘솔 메뉴에서 자원 관리자 > 스택을 열고 스택 작성을 클릭하십시오.
    2. github에서 얻은 tf 파일을 압축 한 ZIP 파일 또는 폴더를 지정하여 리소스 관리자 스택을 만듭니다.
    3. 계획 작업/적용 작업 실행

    샘플 파일 보충



    예약된 공용 IP 사용



    컴퓨팅 인스턴스와 로드 밸런서에 각각 예약된 공용 IP를 할당해 보았습니다.

    예약된 공용 IP 생성



    publicip.tf
    resource oci_core_public_ip publicip_lb {
      compartment_id = var.compartment_ocid
      display_name = "lb01"
      lifetime = "RESERVED"
    }
    

    컴퓨팅 인스턴스에 할당



    퍼블릭 IP 할당 VNIC, 프라이빗 IP OCID를 획득하고 예약된 퍼블릭 IP 할당

    publicip_compute.tf
    data oci_identity_availability_domain AD-1 {
      compartment_id = var.compartment_ocid
      ad_number      = "1"
    }
    data oci_core_vnic_attachments instance1_vnics {
      availability_domain = data.oci_identity_availability_domain.AD-1.name
      compartment_id      = var.compartment_ocid
      instance_id         = oci_core_instance.ap1.id
    }
    
    data oci_core_vnic instance1_primary_vnic {
        vnic_id = data.oci_core_vnic_attachments.instance1_vnics.vnic_attachments[0].vnic_id
    }
    
    data oci_core_private_ips instance1_ip {
        vnic_id = data.oci_core_vnic.instance1_primary_vnic.id
    }
    resource oci_core_public_ip publicip_ap {
      compartment_id = var.compartment_ocid
      display_name = "ap01"
      lifetime      = "RESERVED"
      private_ip_id = data.oci_core_private_ips.instance1_ip.private_ips[0].id
    }
    

    로드 밸런서에 할당



    publicip_lb.tf
    resource oci_load_balancer_load_balancer LB1 {
      compartment_id = var.compartment_ocid
      display_name = "LB1"
      ip_mode    = "IPV4"
      is_private = "false"
      reserved_ips {
        id = oci_core_public_ip.publicip_lb.id
      }
      network_security_group_ids = [
        oci_core_network_security_group.export_Network-Security-Group-for-AP.id,
      ]
      shape = "100Mbps"
      subnet_ids = [
        oci_core_subnet.export_PublicSubnet.id,
      ]
    }
    

    적용 작업 로그



    적용 작업 로그에 로드 밸런서, AP 서버의 공용 IP 주소 및 AP 서버에 대한 ssh 로그인 비밀 키 파일 내용이 출력됩니다.


    wordpress 초기 설정



    컴퓨팅 인스턴스의 공용 IP 주소에 브라우저에서 http 액세스하여 wordpress 초기 화면이 표시되는지 확인
    http://<컴퓨트 인스턴스 퍼블릭 IP 주소>/


    결론



    OCI의 Terraform Managed Services 리소스 관리자를 사용하여 MySQL Database Service 및 액세스 컴퓨팅 인스턴스에 wordpress 환경을 배포했습니다.

    좋은 웹페이지 즐겨찾기