UNIX-Like 시스템에 Terraform 구성 정보

Terraform을 사용하여 Oracle Cloud Infrastructure 구성요소를 생성하려면 Terraform을 다운로드하여 설치해야 합니다. 또한 필요한 기반 구조 구성 요소를 생성하는 데 사용할 구성 파일을 생성하는 Terraform 모듈을 다운로드합니다.

Terraform을 설치하고 Teraform 모듈을 저장하는 시스템은 온프레미스나 클라우드에서 사용할 수 있습니다. 편의를 위해 이 이름은 로컬 시스템 또는 로컬 호스트로 제공됩니다.

Terraform을 실행하기 전에 다음을 수행합니다.

  • 컴퓨트 인스턴스 액세스를 허용하는 데 사용되는 SSH 키 쌍을 생성합니다.

  • Terraform에서 적용한 API 호출을 인증하는 데 사용되는 API 서명 키 생성

  • Terraform에서 액세스를 인증하고 해당 계획을 실행하는 데 사용되는 환경 변수 설정

이러한 단계를 완료한 후 Oracle Cloud Infrastructure 에서 기반 구조 구성요소를 생성할 Terraform 구성 파일을 적용할 준비가 되었습니다.

Terraform 설치

Linux 또는 UNIX와 같은 시스템에 Terraform을 설치하려면 Terraform 웹 사이트에서 해당 패키지를 다운로드하십시오.

  1. https://www.terraform.io/downloads.html 으로 이동합니다.
  2. 적용 가능한 패키지를 로컬 시스템에 다운로드합니다.
  3. 패키지를 /usr/local/bin/ 경로에 추출합니다.
    더 이상 설치는 필요하지 않습니다. 이제 Terraform이 설치되어 사용할 준비가 되었습니다.

    또한 Terraform을 로컬 시스템의 다른 위치로 추출할 수 있습니다. 시스템의 PATH 변수에 위치가 추가되었는지 확인하십시오.

  4. 설치를 확인하고 버전을 확인하려면 터미널을 열고 terraform -version 를 실행합니다.
    출력에 표시된 Terraform 버전이 보입니다. 예: Terraform v0.11.8

Terraform 모듈 다운로드

Terraform을 사용하여 Oracle Cloud Infrastructure 에서 인프라 구성요소 생성을 시작하려면 Terraform 모듈을 다운로드합니다.

  1. Git 또는 웹 브라우저를 사용하여 로컬 시스템에서 Terraform 모듈을 복제하거나 다운로드할 수 있습니다. Git 저장소에 대한 링크를 보려면 왼쪽 탐색에서 코드 다운로드 를 누릅니다.
  2. Terraform 모듈을 로컬 시스템의 디렉토리로 압축 해제하거나 추출합니다.
  3. Terraform 모듈이 있는 디렉토리로 이동합니다. terraform init 을 실행합니다. 또한 Terraform용 Oracle Cloud Infrastructure 제공자를 다운로드합니다.
    Terraform은 OCI 제공자 플러그인과 함께 모듈을 초기화합니다. 초기화가 완료되면 Terraform has been successfully initialized! 메시지가 표시됩니다.

Bastion 호스트에 액세스하기 위한 SSH 키 쌍 생성

SSH 키 쌍은 공용 서브넷에 생성된 인스턴스에 안전하게 액세스할 수 있도록 하는 데 사용됩니다. 로컬 호스트에 SSH 키 쌍을 생성합니다. 그런 다음 Terraform 모듈이 SSH 공용 키를 기본 호스트에 추가합니다. 공용 인터넷을 통해 기본 호스트에 접속해야 하는 경우 액세스를 인증할 SSH 전용 키를 제공합니다.

ssh-keygen 유틸리티를 사용하여 SSH 키 쌍을 생성할 수 있습니다. SSH 키에 대해 문장암호를 설정하지 마십시오.

  • ssh-keygen 유틸리티를 사용하여 SSH 키 쌍을 생성하려면 터미널에서 ssh-keygen -t rsa -N "" -b 2048 -C "<key_name>" -f <path/root_name> 를 입력합니다.
    이 명령에서 다음을 수행합니다.
    • -t rsa 는 RSA 알고리즘을 사용하여 키를 생성하도록 지정합니다.

    • -N "" 은 이 키와 연관시킬 비밀번호 구문을 지정합니다. 따옴표 사이에 아무것도 입력하지 마십시오. 문장암호 없이 키가 생성됩니다.

    • -b 2048 는 2048비트 키를 생성하도록 지정합니다. 기본값이며 최소 권장값입니다.

    • -C "<key_name>" 은 이 키 쌍의 이름을 지정합니다.

    • -f <path/root_name> 은 키가 저장되는 위치와 공용 키 및 전용 키의 루트 이름을 지정합니다. 공용 키에는 루트 이름에 추가된 .pub 이 있습니다.

SSH 키 쌍이 생성되고 지정한 위치에 저장됩니다. 이 위치를 기록해 둡니다.

다른 인스턴스에 액세스하기 위한 SSH 키 쌍 생성

배달 호스트는 공용 IP 주소가 없는 다른 인스턴스로 SSH 전송을 사용으로 설정하고 공용 인터넷을 통한 접근을 허용하지 않는 데 사용됩니다. 기본 호스트에서 다른 인스턴스에 안전하게 액세스하려면 전용 서브넷의 인스턴스에 저장된 공용 키가 로컬 시스템에 저장된 전용 키와 일치하는 SSH 키 쌍을 사용합니다. 보안 모범 사례로 이 SSH 키 쌍은 기본 호스트에 액세스하는 데 사용되는 SSH 키 쌍과 동일하면 안됩니다.

로컬 호스트의 ssh-keygen 를 사용하여 다른 SSH 키 쌍을 생성합니다. 이 SSH 키 쌍을 저장할 위치를 기록해 둡니다.

API 서명 키 생성

Oracle Cloud Infrastructure 에서 Terraform 스크립트를 인증하려면 PEM (Privacy Enhanced Mail) 형식으로 RSA 키 쌍을 제공해야 합니다. 이 API 서명 키는 인스턴스에 액세스하는 데 사용하는 SSH 키 쌍과 동일하지 않습니다. OpenSSL 를 사용하여 이 키 쌍을 생성할 수 있습니다.

  1. 홈 영역에 숨겨진 디렉토리를 생성하여 PEM 키를 저장합니다. 다음을 입력합니다. mkdir ~/.oci
  2. OpenSSL 를 사용하여 전용 키를 생성합니다. 전용 키를 생성할 때 2048비트 이상을 지정해야 합니다. 다음을 입력합니다. openssl genrsa -out ~/.oci/key_name.pem 2048
  3. 전용 키만 읽을 수 있도록 전용 키에 대한 권한을 변경합니다. 다음을 입력합니다. chmod go-rwx ~/.oci/key_name.pem
  4. 그런 다음 OpenSSL 를 사용하여 제공된 전용 키에 대한 공용 키를 생성합니다. 다음을 입력합니다. openssl rsa -pubout -in ~/.oci/key_name.pem -out ~/.oci/key_name_public.pem
선택한 다른 위치에 API 서명 키를 저장할 수 있습니다. 하지만 이 위치에 주의하십시오.

콘솔을 사용하여 API 서명 키 업로드

API 서명 키를 생성한 후에는 Oracle Cloud Infrastructure 에서 연관된 사용자에 대한 공용 키를 업로드해야 합니다. API 서명 키를 처음 업로드할 때는 콘솔을 사용해야 합니다. 나중에 API를 사용하여 API 키를 업로드할 수도 있습니다.

  1. Oracle Cloud Infrastructure 콘솔에 사인인합니다.
  2. Id 를 누른 다음 사용자 를 누릅니다.
  3. API 서명 키를 추가할 사용자를 누릅니다.
  4. 사용자 세부정보 페이지에서 공용 키 추가 를 누릅니다.
  5. 로컬 시스템에서 공용 키를 복사하려면 cat ~/.oci/key_name_public.pem | pbcopy 를 입력합니다.
    키를 다른 위치에 저장한 경우 대신 해당 위치에 대한 경로를 입력합니다.
  6. 콘솔에서 공용 키 값을 붙여넣고 추가 를 누릅니다.

환경 변수 설정

여기에 제공된 Terraform 모듈을 사용하면 텍스트 파일에 필요한 값을 지정하여 환경 변수를 설정할 수 있습니다. 그런 다음 파일의 소스를 지정하여 필요한 환경 변수가 모두 적절하게 설정되어 있는지 확인할 수 있습니다.

시작하기 전에 Oracle Cloud Infrastructure 콘솔에 로그인합니다. 콘솔을 사용하여 다음 정보를 찾을 수 있습니다.

  • OCID (테넌시 Oracle Cloud Infrastructure ID)

  • 사용자 OCID

  • 사용할 API 서명 키의 지문

  • 지역

  • 구획 OCID

또한 API 서명 키 및 SSH 키 쌍이 로컬 시스템에 저장되는 위치를 알고 있어야 합니다.

  1. 로컬 시스템에서 Terraform 모듈이 있는 디렉토리로 이동합니다.
  2. 텍스트 편집기에서 env-vars 파일을 엽니다.
  3. env-vars 파일에는 네 개의 섹션이 있습니다. 인증 세부정보 섹션으로 시작합니다.
    1. 테넌시 OCID를 입력합니다. Oracle Cloud Infrastructure 콘솔의 하단에서 테넌시 ocd를 찾을 수 있습니다. ocid1.tenancy.oc1..aaaaa... 와 유사한 문자열입니다. 이 값을 env-vars 파일에 붙여넣습니다.
    2. 사용자 OCID를 입력합니다. 사용자 OCID를 찾으려면 Oracle Cloud Infrastructure 콘솔에서 id 를 누르고 사용자 를 누릅니다. 사용자 OCID와 함께 사용자 목록이 표시됩니다. 필요한 사용자 OCID를 복사하려면 사용자 이름 아래에 있는 복사 를 누릅니다. 이 값을 env-vars 파일에 붙여넣습니다.
    3. API 서명 키 지문을 입력합니다. Oracle Cloud Infrastructure 콘솔의 [사용자 ] 페이지에서 사용자를 눌러 사용자 세부 정보 페이지를 표시합니다. API 키 섹션에 나열된 키에서 API 키 지문을 복사합니다. 이 값을 env-vars 파일에 붙여넣습니다.
    4. 로컬 시스템에 있는 API 전용 키의 전체 경로 및 파일 이름을 입력합니다.
  4. env-vars 파일의 영역 섹션에서 기반 구조 구성 요소를 생성할 영역을 입력합니다. 현재 보고 있는 영역이 Oracle Cloud Infrastructure 콘솔의 맨 위에 표시됩니다. 콘솔을 사용하여 액세스 권한이 있는 다른 영역을 찾을 수도 있습니다.
  5. env-vars 파일의 구획 섹션에서 기반 구조 구성요소를 생성하려는 구획의 구획 OCID를 입력합니다. 이전에 지정한 사용자가 여기에서 지정한 구획에 대한 필수 권한을 가진 그룹에 속하는지 확인하십시오. 구획 OCID를 찾으려면 Oracle Cloud Infrastructure 콘솔로 이동하십시오. Id 를 누른 다음 구획 을 누릅니다. 구획 OCID와 함께 구획 목록이 표시됩니다. 필요한 구획 OCID를 복사하려면 구획 이름 아래에 있는 복사 를 누릅니다. 이 값을 env-vars 파일에 붙여넣습니다.
  6. env-vars 파일의 공용/전용 키 섹션에 있는 기본 호스트 및 기타 인스턴스의 경우 로컬 시스템에 있는 해당 SSH 공용 및 전용 키의 전체 경로 및 파일 이름을 입력합니다. 전용 키는 openssh 형식이어야 합니다.
  7. 모든 값을 올바르게 입력했는지 확인합니다. 값을 생략하면 Terraform을 실행할 때 입력하라는 메시지가 표시됩니다. 잘못된 값을 제공한 경우 Terraform에서 오류가 발생합니다. 모든 값이 정확하면 env-vars 파일을 저장하고 닫습니다.
  8. env-vars 파일에 지정된 환경 변수를 설정하려면 터미널을 열고 Terraform 모듈이 있는 디렉토리로 이동합니다. 다음을 입력합니다. source ./env-vars

Terraform 구성 확인

필요한 환경 변수를 모두 설정한 후 Terraform을 실행할 준비가 되었는지 확인합니다.

  • 터미널에서 Terraform 모듈이 있는 디렉토리로 이동합니다. 다음을 입력합니다. terraform plan
    이 명령의 출력은 현재 디렉토리의 모든 모듈에 있는 모든 구성의 실행 계획을 표시합니다. 이 산출은 현재 인프라가 구성과 일치하도록 변경할 수 있도록 Terraform이 수행할 작업에 대해 설명합니다. 현재 생성된 구성 요소가 없으면 terraform apply 를 실행할 때 생성될 구성 요소 목록이 출력에 표시됩니다. 이 명령은 구성요소를 생성하지 않으며, 구성이 성공했는지 확인하고 필요한 모든 인증 값이 해당 환경 변수에 올바르게 저장되었는지 확인하고자 하는 경우 실행하는 것이 좋습니다.