리소스 프로비전, 구성 및 제거

Terraform를 사용하여 클라우드의 리소스를 효율적으로 배치, 변경 및 제거할 수 있습니다.

Terraform 상태 파일 정보

Terraform는 관리 기반 구조 리소스를 추적하고, 배치된 리소스를 구성에 매핑하고, 메타 데이터를 추적하고, 대형 기반 구조 배치의 성능을 향상시키기 위한 상태 정보를 저장합니다.

기본적으로 terraform.tfstate 파일은 로컬 호스트에 저장됩니다. 이 기본 동작은 여러 사용자가 제공된 구성에 정의된 리소스를 만들고 삭제해야 하는 IT 환경에서 최적화되지 않습니다. 다중 사용자 환경에서 리소스 배치 및 관리를 제어하려면 Terraform 상태 파일을 Oracle Cloud Infrastructure Object Storage에 저장하고 모든 사용자 간에 상태 파일과 잠금 파일을 공유합니다.

Using the Object Store for Terraform State Files을 참조하십시오.

리소스 생성

terraform.tfvars 파일에서 변수를 설정한 후 Terraform CLI를 사용하여 Terraform 구성에 정의된 리소스를 배치합니다.

시작하기 전에 로컬 시스템에 인터넷 액세스 권한이 있는지 확인하십시오. 로컬 시스템이 방화벽으로 보호되는 경우 적합한 프록시를 사용하여 Terraform가 인터넷에 연결할 수 있습니다.
  1. Terraform를 설치한 컴퓨터에서 terraform.tfvars 파일이 포함된 디렉토리로 이동합니다.
  2. 다음 명령을 실행하여 Terraform를 초기화합니다.
    terraform init
    이 명령은 oci 제공자 플러그인을 다운로드하고 Terraform에서 사용할 디렉토리를 설정합니다.
  3. 구성 구문에 오류가 없는지 확인합니다.
    terraform validate
  4. 구문 오류가 있으면 오류를 수정하고 이전 단계를 반복합니다.
    문제를 디버그하려면 로깅을 구성할 수 있습니다.
    • TF_LOG 환경 변수를 사용하여 로그 레벨을 설정합니다. 지원되는 로그 레벨은 TRACE, DEBUG, INFO, WARN 또는 ERROR 입니다. TRACE 레벨은 가장 상세 정보입니다.
    • TF_LOG_PATH 환경 변수를 사용하여 로그 파일 경로를 설정합니다.
  5. 구성에 정의된 리소스를 검토합니다.
    terraform plan
    출력에는 이 구성을 적용할 때 수행되는 모든 작업의 세부 정보 및 다음 예에 표시된 것과 같은 요약이 표시됩니다.
    Plan: 8 to add, 0 to change, 0 to destroy.

    주:

    메시지의 숫자 8은 예입니다. 실제 번호는 Terraform 구성에서 정의한 설정에 따라 다릅니다.
  6. 변경하려는 경우 구성을 편집하고 검증한 다음 개정된 계획을 검토합니다.
  7. 리소스를 만듭니다.
    terraform apply
  8. Do you want to perform these actions? 프롬프트에서 를 입력합니다.
    Terraform가 각 리소스를 생성하면 작업 상태가 표시됩니다.

    다음 예와 같이 모든 리소스가 생성되면 추가된 리소스 수, 변경 및 삭제된 리소스 수와 함께 Apply complete 메시지가 표시됩니다.

Apply complete! Resources: 33 added, 0 changed, 0 destroyed.

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • kubeconfig 출력은 로컬 호스트에서 KUBECONFIG 환경 변수를 설정하는 데 사용할 수 있는 명령을 표시합니다. 로컬 호스트에서 kubectl CLI를 사용하여 Kubernetes 클러스터를 관리하려면 이 명령을 실행합니다. 이 명령은 Terraform가 구성을 적용하는 동안 생성하는 generated/kubeconfig 파일에 KUBECONFIG를 설정합니다.
  • ssh_to_admin 출력에는 관리 호스트에 접속하는 데 사용할 수 있는 ssh 명령이 표시됩니다.
  • ssh_to_bastion 출력에는 기본 호스트에 접속하는 데 사용할 수 있는 ssh 명령이 표시됩니다.

주:

terraform output 명령을 실행하여 언제든지 이 Terraform 출력을 볼 수 있습니다.
Oracle Cloud의 Kubernetes 토폴로지가 준비되었습니다. 이제 컨테이너화된 응용 프로그램을 배치할 수 있습니다.

관리 호스트가 리소스를 관리하도록 허용

관리 호스트가 구획의 리소스를 관리할 수 있도록 하려면 관리 호스트를 인스턴스 주체로 지정할 수 있습니다. CLI 명령을 실행하거나 관리 호스트에서 API를 호출하여 토폴로지의 리소스를 관리하려는 경우 이 기능을 사용합니다.

인스턴스 주체로 지정된 컴퓨트 인스턴스는 고유 Id를 가져옵니다. 자동으로 생성되어 인스턴스에 지정된 인증서를 사용하여 인증할 수 있습니다. 인증서가 주기적으로 회전됩니다. 인증서를 관리 호스트에 분배하거나 순환할 필요가 없습니다.

주:

SSH를 사용하여 컴퓨트 인스턴스에 연결할 수 있는 사용자는 인스턴스에 부여된 인스턴스 고유 권한을 상속합니다. 관리 호스트를 인스턴스 주체로 지정할지 여부를 결정할 때 이를 고려하십시오. 관리 호스트에 영향을 주지 않고 언제든지 이 기능을 해제하거나 설정할 수 있습니다.
  • 관리 호스트를 인스턴스 주체로 지정하려면 terraform.tfvars에서 다음을 설정한 다음 terraform apply를 실행합니다.

    admin_instance_principal = true

    관리 호스트는 동적 그룹의 멤버가 되고, 동적 그룹이 구획의 모든 리소스를 관리할 수 있도록 정책 문이 생성됩니다.

  • 관리 호스트에서 인스턴스 주체 권한을 취소하려면 terraform.tfvars에서 다음을 설정하고 terraform apply를 실행합니다.

    admin_instance_principal = false

Bastion 호스트에 대한 통지 사용 또는 사용 안함

Oracle Cloud Infrastructure Notification Service를 사용하여 업데이트가 적용되거나 Oracle Ksplice에서 알려진 폭발을 감지한 경우 기본 호스트에서 상태 메시지를 수신할 수 있습니다.

주:

이 솔루션의 Terraform 코드는 기본 Oracle Autonomous Linux 이미지를 사용하는 경우에만 통지를 구성합니다.
  • 기본 호스트에 대한 통지를 사용으로 설정하려면 terraform.tfvars에서 다음 변수를 설정합니다.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    다음은 통지 관련 변수가 정의된 terraform.tfvars의 예입니다.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • 기본 호스트가 이미 생성되었으며 지금 통지를 사용으로 설정하려면 이러한 변수를 설정하고 terraform apply를 다시 실행하십시오.
    • 필요한 정책은 기본 호스트가 통지를 게시할 수 있도록 정의됩니다.
    • 통지 항목이 생성되고 지정한 전자메일 주소가 항목에 가입되어 있습니다.
    • 기본 사항 호스트는 통지를 전송하도록 구성되었습니다.

    리소스가 생성되면 가입을 확인하도록 요구하는 전자 메일이 수신됩니다.

  • 통지를 사용 안함으로 설정하려면 terraform.tfvars에서 다음을 설정하고 terraform apply를 실행합니다.

    bastion_notification_enabled = false
    admin_notification_enabled = false

모든 리소스 제거

  1. Terraform를 설치한 컴퓨터에서 terraform.tfvars 파일이 포함된 디렉토리로 이동합니다.
  2. 다음 명령을 입력합니다.
    terraform destroy
    Terraform는 다음 예와 같이 삭제될 리소스의 세부 정보를 표시합니다.
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. Do you really want to destroy all resources? 프롬프트에서 를 입력합니다.
    Terraform에서 각 리소스를 제거하면 작업 상태가 표시됩니다.
    다음 예에 표시된 것과 같이, 모든 리소스가 제거된 후 삭제된 리소스 수와 함께 Destroy complete 메시지가 표시됩니다.
    Destroy complete! Resources: 12 destroyed.