Terraform을 사용하여 기반 구조 구성 요소 개발 정보

다운로드한 Terraform 모듈에는 다양한 인프라 구성요소를 생성하고 설정하기 위한 별도의 스크립트가 포함되어 있습니다. 이러한 스크립트를 보고 편집하여 생성할 구성 요소 및 각 구성 요소의 특성을 이해할 수 있습니다.

Terraform 디렉토리의 루트 레벨에는 다양한 하위 디렉토리의 구성 파일을 참조하는 기본 구성 파일 main.tf, 가 포함되어 있습니다. 이 디렉토리에는 Terraform 구성 파일에 사용되는 변수를 정의하거나 Terraform 제공자, 데이터 리소스 또는 출력에 대한 정보가 포함된 파일도 포함됩니다. 또한 보안 목록과 경로 지정 테이블을 생성하는 Terraform 구성 파일은 루트 레벨에도 있습니다.

Terraform 디렉토리에는 modules 디렉토리가 포함됩니다. modules 디렉토리에는 다음 항목이 들어 있습니다.

  • bastion: 기본 호스트를 생성하는 데 사용됩니다.

  • compute: UNIX 및 Windows Oracle Cloud Infrastructure Compute 인스턴스를 생성하는 데 사용됩니다.

  • dbsystem: Oracle Cloud Infrastructure Database 시스템을 생성하는 데 사용됩니다.

  • filesystem: Oracle Cloud Infrastructure 파일 저장소 파일 시스템을 생성하는 데 사용됩니다.

  • loadbalancer: Oracle Cloud Infrastructure Load Balancing 인스턴스를 생성하는 데 사용됩니다.

  • network: VCN (가상 클라우드 네트워크), 서브넷, 인터넷 게이트웨이, 서비스 게이트웨이, DRG (동적 라우팅 게이트웨이) 및 NAT (네트워크 주소 변환) 게이트웨이와 같은 네트워크 리소스를 생성하는 데 사용됩니다.

생성할 기반 구조 구성 요소 정보

기반 구조 구성요소를 생성하기 전에 구성요소 유형, 번호 및 배포에 대한 일부 입력을 제공해야 합니다. 예를 들어, 필요한 응용 프로그램 인스턴스 수를 지정하고, 단일 가용성 도메인에 모든 리소스를 생성할지 아니면 두 개의 가용성 도메인에 걸쳐 리소스를 생성할지 여부, DB 시스템에서 원하는 데이터베이스의 에디션과 버전을 지정할 수 있습니다.

terraform.tfvars 파일을 Terraform 디렉토리의 루트 레벨에 사용하여 이 입력을 제공합니다. 텍스트 편집기에서 terraform.tfvars 파일을 열고 필요한 정보를 입력합니다. 이 파일에서 사용할 수 있는 제안 값은 루트 레벨 디렉토리에 제공된 README 를 참조하십시오.

기본적으로 Terraform 모듈은 두 개의 가용성 도메인에 구성요소를 생성합니다. 이 값은 terraform.tfvars 파일의 AD 변수 값에 의해 제어됩니다. 이 값을 편집하여 기반 구조 구성요소를 호스트하는 데 사용할 가용성 도메인을 확인하거나 수정할 수 있습니다. 단일 가용성 도메인에서 구성 요소를 생성하려면 AD 값을 terraform.tfvars 파일의 필수 가용성 도메인 1, 2, or 3, 로 설정합니다. 두 개의 가용성 도메인에 구성 요소를 생성하려면 가용성 도메인의 수를 지정하거나 수정합니다.

변경 작업 없이 제안된 기본값을 사용하여 Terraform 구성 파일을 적용할 경우 두 개의 가용성 도메인에서 다음 기반 구조 구성 요소가 생성됩니다.

  • 이름이 psftvcn 이고 IP 주소 범위가 172.16.0.0/16. 인 VCN

  • 각 가용성 도메인에 8개의 서브넷이 있습니다. 각 서브넷에는 /24 CIDR이 있습니다. 예: 172.16.4.0/24. 각 서브넷의 이름에 접미어가 붙은 수는 서브넷이 생성된 가용성 도메인을 나타냅니다.

    • 이름이 appsubad1appsubad2 인 애플리케이션 서버의 전용 서브넷입니다.

    • 이름이 websubad1websubad2 인 웹 서버의 전용 서브넷입니다.

    • 로드 밸런서의 전용 서브넷으로, 이름은 lbsubad1lbsubad2 입니다.

    • dbsubad1dbsubad2 이름을 가진 데이터베이스 시스템의 전용 서브넷입니다.

    • 이름이 essubad1essubad2 인 ElasticSearch 서버의 전용 서브넷

    • 이름이 toolsssubad1toolssubad2 인 PeopleTools 인스턴스의 전용 서브넷입니다.

    • fsssubad1fsssubad2 이름을 가진 파일 시스템 서비스의 전용 서브넷입니다.

    • 이름이 bassubad1bassubad2 인 기본 호스트의 공용 서브넷입니다.

  • 다음 경로 지정 테이블입니다. terraform.tfvars 파일에 지정된 VCN의 DNS 레이블이 각 라우팅 테이블 이름에 접두어로 붙습니다.

    • 규칙이 없는 기본 경로 지정 테이블입니다.

    • 오브젝트 스토리지 트래픽을 서비스 게이트웨이로 라우팅하는 규칙과 NAT 인스턴스로 다른 모든 트래픽을 라우팅하는 규칙이 있는 개인 라우팅 테이블 psftvcnpvtrt 입니다.

    • 인터넷 게이트웨이로 트래픽을 라우팅하는 경로 규칙이 포함된 공용 경로 지정 테이블 psftvcnpubrt,

  • 다음 보안 목록은 다음과 같습니다.

    • 기본 보안 목록입니다.

    • 이름이 AppSecList 인 애플리케이션 서버 서브넷에 대한 보안 목록입니다.

    • 이름이 BastionSecList 인 기본 호스트 서브넷에 대한 보안 목록입니다.

    • 이름이 DBSecList 인 데이터베이스 서브넷에 대한 보안 목록입니다.

    • 이름이 ESSecList 인 ElasticSearch 서버 서브넷에 대한 보안 목록입니다.

    • FSSSecList 이름을 가진 파일 시스템 서버 서브넷에 대한 보안 목록입니다.

    • 로드 밸런서 서브넷에 대한 보안 목록으로, 이름이 LBSecList 입니다.

    • 이름이 PToolsSecList 인 PeopleTools 서브넷에 대한 보안 목록입니다.

    • 이름이 WebSecList 인 웹 서버 서브넷에 대한 보안 목록입니다.

  • 이름이 psftvcnigw. 인 인터넷 게이트웨이 - terraform.tfvars 파일에 지정된 DNS 레이블이 인터넷 게이트웨이 이름에 접두어로 표시됩니다. 인터넷 게이트웨이는 클라우드 네트워크의 모서리를 인터넷과 연결합니다. VCN에서 VCN 외부의 공용 IP 주소로의 트래픽은 인터넷 게이트웨이를 통과합니다.

  • 동적 라우팅 게이트웨이로, 이름이 psftvcndrg. 인 경우 terraform.tfvars 파일에 지정된 DNS 레이블 이름이 동적 라우팅 게이트웨이의 이름으로 접두어로 붙습니다. 동적 라우팅 게이트웨이는 VCN과 인터넷 이외의 대상에 대한 트래픽 경로를 제공합니다. 예를 들어, IPSec VPN 또는 Oracle Cloud Infrastructure FastConnect 를 사용하여 온프레미스 네트워크로 트래픽 또는 원격 VCN 피어링을 사용하는 다른 영역에서 VCN으로 트래픽을 보내는 것과 같습니다.

  • 이름이 psftvcnsvcgtw. 인 서비스 게이트웨이 - terraform.tfvars 파일에 지정된 DNS 레이블 이름이 서비스 게이트웨이 이름에 접두어로 표시됩니다. 서비스 게이트웨이를 사용하면 VCN이 Oracle Cloud Infrastructure 오브젝트 스토리지와 같은 공용 Oracle Cloud Infrastructure 서비스에 접근할 수 있지만 VCN을 공용 인터넷에 노출하지 않습니다.

  • 두 가용성 도메인에 모두 분배된 다음 Oracle Cloud Infrastructure Compute 인스턴스입니다. terraform.tfvars 파일에 지정된 환경 접두어 (각 인스턴스의 이름, 영역, 가용성 도메인 번호, 개수) 가 접미어로 붙습니다. 각 인스턴스에는 연관된 부팅 볼륨이 있습니다.

    • 애플리케이션 서버입니다. 생성된 애플리케이션 서버 인스턴스의 수와 해당 구성은 terraform.tfvars 파일에서 지정한 값으로 결정됩니다.

    • 기본 호스트

  • 각 가용성 도메인에 하나씩 두 개의 Oracle Cloud Infrastructure Database 시스템이 있습니다. Oracle Cloud Infrastructure Database 시스템의 이름, 버전, 버전 및 기타 속성은 terraform.tfvars 파일에서 지정한 값에 따라 결정됩니다. Oracle Cloud Infrastructure Database 시스템은 데이터베이스 서브넷 dbsubad1dbsubad2. 에 생성됩니다.

  • PeopleSoft 소프트웨어 준비에 사용되는 파일 시스템 하나가 생성됩니다. 파일 시스템은 파일 시스템 서브넷 fssubad1 에 생성됩니다. 파일 시스템은 모든 Oracle Cloud Infrastructure Compute 인스턴스에서 마운트됩니다.

  • 각 가용성 도메인에서 하나씩 로드 밸런서의 두 가지가 있습니다. terraform.tfvars 파일에 지정된 환경 접두어 앞에는 각 로드 밸런서의 이름, 영역 및 개수가 접미어로 지정됩니다. 로드 밸런서는 웹 서버 서브넷, websubad1websubad2. 로드 밸런서에 대한 백엔드 집합 및 리스너도 생성됩니다.

Terraform을 사용하여 기반 구조 구성요소 생성

OCI 제공자와 함께 Terraform을 설치하고 로컬 시스템에서 환경 변수를 설정한 후에는 Oracle Cloud Infrastructure 에서 기반 구조 구성요소를 생성할 수 있도록 Terraform 모듈을 적용할 준비가 됩니다.

  1. 로컬 시스템에서 터미널을 열거나 Windows PowerShell 를 실행합니다. Terraform 모듈이 있는 디렉토리로 이동합니다.
  2. 다음을 입력합니다. terraform apply
  3. 작업 확인 메시지가 표시되면 yes. 를 입력합니다.
Terraform은 현재 디렉토리의 Terraform 모듈에 지정된 모든 구성요소를 생성하기 시작합니다. 출력은 생성 중인 객체를 표시합니다. 일부 객체 (예: 데이터베이스 시스템) 를 생성하는 데 시간이 오래 걸릴 수 있습니다. 모든 구성요소가 생성되면 Terraform에 완료 메시지가 표시됩니다. 예: Apply complete! Resources: 90 added, 0 changed, 0 destroyed.

명령 출력의 Outputs 섹션에서 Terraform은 생성된 인스턴스의 공용 및 전용 IP 주소를 표시합니다. 접속할 인스턴스의 IP 주소를 기록해 둡니다.

오류가 발생하면 해당 오류를 수정하고 terraform apply 를 다시 실행할 수 있습니다. 이 명령을 처음 실행한 동일한 디렉토리에서 이 명령을 다시 실행해야 합니다. Terraform은 구성요소의 현재 상태를 확인하고 존재하지 않는 구성요소를 생성합니다. 하지만 다른 디렉토리나 동일한 Terraform 모듈을 가진 다른 로컬 시스템에서 Terraform을 실행하는 경우 Terraform은 이를 새로 설정된 상태로 처리하고 다양한 구성 파일에 지정된 모든 리소스를 생성합니다. 다른 디렉토리 또는 로컬 시스템에서 Terraform을 실행하여 기존 리소스를 관리하려면 기존 디렉토리의 Terraform 상태 파일을 기존 디렉토리에서 새 디렉토리 또는 시스템으로 복사합니다. 그러나 일반적으로 한 시스템이나 디렉토리에서 Terraform을 사용하여 다른 시스템 또는 디렉토리에서 Terraform이 생성한 구성요소를 관리하지 않는 것이 좋습니다.