Terraform이란 무엇이며 이를 AWS EC2에 설치하고 사용하는 방법
Terraform은 \코드형 인프라(IaC)\ 도구입니다. 안전하고 반복 가능한 방식으로 인프라를 구축, 관리 및 변경하는 데 사용됩니다.
사람이 읽을 수 있고 자동화된 배포를 위해 HCL(HashiCorp 구성 언어)이라는 구성 언어로 환경을 관리하는 데 사용됩니다.
Terraform은 AWS, GCP 등과 같은 여러 클라우드에서 인프라를 관리하는 데 사용할 수 있습니다. Terraform은 리소스 구성에 대한 정보 소스인 상태 파일을 생성합니다. 즉, 리소스가 생성될 때마다 이 상태 파일이 생성 중인 리소스의 상태로 업데이트됩니다.
이 기사에서는 Ubuntu에 Terraform을 설치하고 이를 사용하여 AWS 클라우드에 VPC를 생성하는 단계를 살펴봅니다.
Terraform에 대해 자세히 알아보려면 여기를 클릭하세요.
전제 조건
- AWS 계정(계정이 없는 경우 생성).
- EC2 인스턴스(EC2 인스턴스 생성 방법을 알아보려면 여기를 클릭)
- 서버에 대한 루트 액세스.
- AWS IAM 사용자의 access_key 및 secret_key. (AWS에서 access_key 및 secret_key로 IAM 사용자를 생성하는 방법을 알아보려면 여기를 클릭하세요.)
우리가 할 일
- Terraform 설치
- Terraform 구성 파일을 작성합니다.
- Terraform 구성 파일을 사용하여 VPC 생성
- 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를 만드는 데 필요한 구성도 확인했습니다. 이제 우리는 변수 선언 및 정의에도 익숙합니다.