웹사이트 검색

Terraform이란 무엇이며 이를 AWS EC2에 설치하고 사용하는 방법


Terraform은 \코드형 인프라(IaC)\ 도구입니다. 안전하고 반복 가능한 방식으로 인프라를 구축, 관리 및 변경하는 데 사용됩니다.

사람이 읽을 수 있고 자동화된 배포를 위해 HCL(HashiCorp 구성 언어)이라는 구성 언어로 환경을 관리하는 데 사용됩니다.

Terraform은 AWS, GCP 등과 같은 여러 클라우드에서 인프라를 관리하는 데 사용할 수 있습니다. Terraform은 리소스 구성에 대한 정보 소스인 상태 파일을 생성합니다. 즉, 리소스가 생성될 때마다 이 상태 파일이 생성 중인 리소스의 상태로 업데이트됩니다.

이 기사에서는 Ubuntu에 Terraform을 설치하고 이를 사용하여 AWS 클라우드에 VPC를 생성하는 단계를 살펴봅니다.

Terraform에 대해 자세히 알아보려면 여기를 클릭하세요.

전제 조건

  1. AWS 계정(계정이 없는 경우 생성).
  2. EC2 인스턴스(EC2 인스턴스 생성 방법을 알아보려면 여기를 클릭)
  3. 서버에 대한 루트 액세스.
  4. AWS IAM 사용자의 access_key 및 secret_key. (AWS에서 access_key 및 secret_key로 IAM 사용자를 생성하는 방법을 알아보려면 여기를 클릭하세요.)

우리가 할 일

  1. Terraform 설치
  2. Terraform 구성 파일을 작성합니다.
  3. Terraform 구성 파일을 사용하여 VPC 생성
  4. Terraform을 사용하여 생성된 VPC 삭제

Terraform 설치

Terraform 설치는 매우 간단하고 간단합니다. 여기에서 시스템에 적합한 패키지를 찾을 수 있습니다.

파일을 다운로드하기 전에 다음 명령을 사용하여 시스템에서 사용할 수 없는 경우 wget 및 unzip 패키지를 설치할 수 있습니다.

apt-get update -y
apt-get install wget unzip -y

패키지를 다운로드할 수 있는 /opt/ 아래에 전용 디렉토리 terraform을 생성합니다.

cd /opt/
mkdir terraform
cd terraform/

wget 명령을 사용하여 terraform 패키지를 다운로드하고 압축을 풉니다.

wget https://releases.hashicorp.com/terraform/0.12.18/terraform_0.12.18_linux_amd64.zip
unzip terraform_0.12.18_linux_amd64.zip
ls -lt

다운로드한 패키지의 압축을 풀면 바이너리 terraform이 표시됩니다. 이 바이너리를 /usr/local/bin/으로 이동합니다.

terraform 명령을 사용하지 않고 버전을 확인하여 설치가 성공했는지 확인할 수 있습니다.

mv terraform /usr/local/bin/
terraform -v

Terraform 구성 파일 작성

terraform 구성 파일을 생성할 수 있는 전용 디렉터리 생성

mkdir terraform
cd terraform/

선택한 편집기를 사용하고 다음 구성을 복사하여 붙여넣어 variables.tf, terraform.tfvars 및 main.tf를 만듭니다.

AWS에 VPC 생성을 담당하는 main.tf를 생성합니다. 다음 구성은 VPC, 인터넷 게이트웨이, 경로 테이블, 가용성 영역 및 보안 그룹을 생성합니다. 이 main.tf는 variables.tf 및 terraform.tfvars에서 변수 값을 읽습니다.

vim main.tf

provider "aws" {
      region     = "${var.region}"
      access_key = "${var.access_key}"
      secret_key = "${var.secret_key}"
}
resource "aws_vpc" "vpc" {
     cidr_block = "10.0.0.0/16"
}
resource "aws_internet_gateway" "gateway" {
     vpc_id = "${aws_vpc.vpc.id}"
}
resource "aws_route" "route" {
     route_table_id         = "${aws_vpc.vpc.main_route_table_id}"
     destination_cidr_block = "0.0.0.0/0"
     gateway_id             = "${aws_internet_gateway.gateway.id}"
}
data "aws_availability_zones" "available" {}
resource "aws_subnet" "main" {
    count                   = "${length(data.aws_availability_zones.available.names)}"
    vpc_id                  = "${aws_vpc.vpc.id}"
    cidr_block              = "10.0.${count.index}.0/24"
    map_public_ip_on_launch = true
    availability_zone       = "${element(data.aws_availability_zones.available.names, count.index)}"
}
resource "aws_security_group" "default" {
     name        = "http-https-allow"
     description = "Allow incoming HTTP and HTTPS and Connections"
     vpc_id      = "${aws_vpc.vpc.id}"
     ingress {
         from_port = 80
         to_port = 80
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
     ingress {
         from_port = 443
         to_port = 443
         protocol = "tcp"
         cidr_blocks = ["0.0.0.0/0"]
    }
}

변수 선언을 포함하는 variables.tf를 생성합니다.

vim 변수.tf

variable "access_key" {
     description = "Access key to AWS console"
}
variable "secret_key" {
     description = "Secret key to AWS console"
}
variable "region" {
     description = "Region of AWS VPC"
}

위 파일에 정의된 변수의 정의를 포함하는 terraform.tfvars를 생성합니다.

vim terraform.tfvars

region = "eu-west-3"
access_key = "AKIAQ6GAIA5XDX32PVJ6"
secret_key = "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"

이제 3개의 파일 즉, variables.tf, terraform.tfvars 및 main.tf가 있어야 합니다.

Terraform 구성 파일을 사용하여 VPC 생성

사용할 첫 번째 명령어는 terraform init입니다. 이 명령어는 구성 내에서 사용되는 제공업체의 플러그인을 다운로드하고 설치합니다. 우리의 경우 aws입니다.

 terraform init

두 번째로 사용할 명령은 terraform plan입니다. 이 명령은 인프라에서 발생할 변경 사항을 확인하는 데 사용됩니다.

 terraform plan

terraform apply 명령은 main.tf 파일에 언급된 aws에 리소스를 생성합니다. 리소스를 생성하기 위한 입력을 제공하라는 메시지가 표시됩니다.

테라포밍 적용

AWS VPC 콘솔로 이동하여 VPC가 생성되었는지 확인할 수 있습니다.

Terraform을 사용하여 생성된 VPC 삭제

main.tf 파일에 언급된 구성을 사용하여 생성한 필수 리소스를 더 알고 있는 경우 \terraform destroy\ 명령을 사용하여 해당 리소스를 모두 삭제할 수 있습니다.

terraform destroy

결론

이 기사에서는 Terraform을 설치하는 단계를 살펴보았습니다. 또한 몇 가지 관련 리소스와 함께 VPC를 만드는 데 필요한 구성도 확인했습니다. 이제 우리는 변수 선언 및 정의에도 익숙합니다.