웹사이트 검색

Terraform 레지스트리에서 모듈을 사용하는 방법


이 페이지에서

  1. 무엇을 다룰 것인가?
  2. 비행 전 확인\n
  3. Terraform 레지스트리의 모듈 사용
  4. Terraform 레지스트리 탐색
  5. 모듈을 사용하여 EC2 인스턴스 시작\n
  6. 마무리…

Terraform Registry는 다양한 공급자와 모듈(재사용 가능한 Terraform 구성)을 찾아 Terraform과 함께 사용할 수 있는 곳입니다. 여기에는 HashiCorp, 타사 공급업체 및 Terraform 커뮤니티와 같은 기여자가 포함됩니다. 이 레지스트리는 다양한 인프라 API를 처리하기 위한 플러그인을 제공하고, 일반적으로 사용되는 인프라 구성 요소를 신속하게 구축하기 위한 기존 모듈을 사용 가능하게 만들고, 효율적으로 작성된 Terraform 코드를 개발하는 방법을 시연하는 것을 목표로 합니다.

우리는 무엇을 다룰 것인가?

이 자습서에서는 Terraform Registry의 모듈을 사용하는 방법을 살펴봅니다. AWS에서 EC2 인스턴스를 생성하는 예를 통해 이를 확인할 수 있습니다.

비행 전 확인

이 자습서에는 다음 전제 조건이 필요합니다.

  1. 로컬 시스템에 설치할 Terraform입니다.\n
  2. Terraform 모듈에 대한 기본 지식.\n
  3. AWS 계정.

Terraform 레지스트리의 모듈 사용

서로 다른 공급자의 모듈은 Terraform 레지스트리에서 유지 관리됩니다. 모듈은 레지스트리 페이지에서 검색할 수 있습니다. 또한 검색하는 동안 확인된 모듈만 검색 결과에 나열됩니다. 이러한 모듈은 호환성과 안정성을 확인하기 위해 HashiCorp에서 확인합니다. 확인되지 않은 모듈은 검색 필터링 옵션을 사용하여 나열할 수도 있습니다.

Terraform Registry에 게시된 모듈은 다음 구문을 사용하여 일반적인 Terraform 코드에서 참조할 수 있습니다.

<NAMESPACE>/<Name of module>/<Name of Provider>

예를 들어 Terraform 레지스트리에서 모듈의 아래 사용법을 살펴보십시오.

module "vpc" {
  source = "terraform-aws-modules/vpc/aws"
}

위의 예에서는 AWS용 Terraform 레지스트리의 VPC 모듈을 사용합니다. 'terraform init' 명령을 실행하면 Terraform 코드에서 참조하는 모듈을 검색하고 저장합니다.

Terraform Registry에는 공개 및 비공개 모듈을 모두 활용할 수 있는 조항이 있습니다. 공용 Terraform 레지스트리는 제공자와 모듈을 게시하고 사용할 수 있도록 공개적으로 허용합니다. 비공개 모듈은 비공개 레지스트리를 사용하여 게시할 수 있습니다.

Terraform 레지스트리 탐색

모듈 페이지에는 모듈 설명, 게시 날짜, 소스 코드 URL, 다운로드 통계 등과 같은 모듈에 대한 간략한 세부 정보가 표시됩니다. 여기에서 Readme, 입력, 출력, 종속성 및 리소스에 대한 다양한 탭도 볼 수 있습니다. 코드에 전달할 변수를 선택하기 위해 이 섹션을 참조할 수 있습니다.

모듈 사용법을 보여주는 예도 있습니다. 예를 들어 이 가이드에서는 EC2 인스턴스를 생성하기 위한 모듈이 사용됩니다. 이 예제를 살펴보기 전에 먼저 이 모듈의 소스 코드 내부를 살펴보겠습니다. 소스 코드 URL을 엽니다. github 페이지에는 이 모듈에 대한 일부 폴더와 일부 파일이 있습니다. 지금은 main.tf, outputs.tf 및 variables.tf의 세 가지 terraform 파일에만 집중하고 있습니다. main.tf 파일에는 EC2 인스턴스를 설명하는 여러 줄이 포함되어 있습니다. 마찬가지로 variables.tf 및 outputs.tf에는 여러 입력 및 출력 값 선언이 있습니다.

모듈을 사용하여 EC2 인스턴스 시작

이제 Terraform 레지스트리에서 모듈을 사용하는 방법을 살펴보겠습니다. 'terraform-aws-modules'의 모듈을 사용하여 EC2 인스턴스를 생성합니다.

1단계. Terraform Registry 웹 페이지를 열고 EC2용 aws 모듈을 검색합니다.

이제 이 모듈 작업을 위해 시스템에서 로컬로 생성한 아래 구성 파일을 살펴보십시오. 이 파일에는 'source' 인수를 사용하여 위의 모듈을 포함했습니다. 여기에 설명된 대로 실제 모듈의 몇 가지 선언만 사용했습니다.

$ nano myinstance.tf
provider "aws" {
  region = "us-east-1"
}

module "ec2_instance" {
  source  = "terraform-aws-modules/ec2-instance/aws"
  version = "~> 3.0"

  name = "single-instance"

  ami                    = "ami-0022f774911c1d690"
  instance_type          = "t2.micro"
 availability_zone    ="us-east-1a"
  key_name               = "Your-Key-pair-name"
  monitoring             = true
  vpc_security_group_ids = ["Security-Group-ID"]
 putin_khuylo    = true

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

이 구성에는 소스와 버전이라는 두 가지 인수가 있습니다.

  1. source: 이 인수는 Terraform 모듈을 사용할 때 필요합니다. 위의 '예제' 구성에서 Terraform은 주어진 인용된 모듈 주소에 대해 Terraform 레지스트리를 조사합니다. 로컬 모듈, URL 및 기타 소스도 여기에서 사용할 수 있습니다.\n
  2. version: 선택적 인수이지만 Terraform 모듈로 작업할 때 사용하는 것이 좋습니다. 포함된 경우 지원되는 소스에 대해 지정된 버전의 Terraform 모듈을 로드합니다. 사용하지 않으면 사용 가능한 최신 모듈 버전이 로드됩니다.\n

먼저 로컬 파일 'myinstance.tf'가 포함된 디렉터리를 초기화합니다. 다음 명령을 실행합니다.


이제 'terraform plan'을 실행하거나 terraform apply 명령을 사용하여 변경 사항을 직접 적용합니다.

$ terraform apply

메시지가 표시되면 '예'를 입력합니다. 그러면 변경 사항을 적용하는 프로세스가 시작됩니다.

마무리…

이 가이드에서는 Terraform 레지스트리 모듈을 사용하는 방법을 살펴보았습니다. 동일한 방법으로 Terraform 모듈을 사용하여 VPC를 구성해 보십시오.