테라폼 플러그인 설치, Git 연결
1. 빈 폴더 생성하여 인텔리제이로 열기
2. main.tf 파일을 추가하고, 추천 플러그인 알림창이 뜨면 플러그인 설치
3. .gitignore 파일 추가
https://www.toptal.com/developers/gitignore/api/intellij,terraform
AWS 콘솔에서 VPC 관련한 필요 없는 것들(기본 생성된 것들) 삭제 => VPC, DHCP 옵션 세트
체크한 후, 작업 > VPC 삭제
인텔리제이에서 terraform 다루기
세팅
terraform {
# terraform login 후에 사용 가능
cloud {
organization = "og-1" # 테라폼 클라우드에서 만든 organization 이름
# terraform cloud에서 설정한 workspace의 이름과 동일해야 함
workspaces {
name = "ws-1"
}
}
# 자바의 import와 비슷한 기능
# aws 라이브러리를 불러온다.
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_vpc" "example" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "example"
}
}
- "10.0.0.0/16" // 16 -> 서브넷 마스크 255.255.0.0 => 가용한 네트워크는 10.0.0.0 ~ 10.0.255.255
- VPC는 리전 단위, 서브넷은 가용 영역 단위
- 위와 같이 설정 후에 터미널에서 terraform init 명령어 입력
terraform init
필요한 소스들을 다운로드한다.
terraform fmt
자동 포맷팅 기능
terraform plan
작성한 코드를 분석하고, 테라폼 명령을 계획한다.
terraform apply
작성한 코드를 실제 적용한다. (+ plan)
Enter a value : yes 입력
===> example 이라는 이름의 VPC 생성 (+ 라우팅 테이블 등 같이 생성됨)
- States에서 현재 상태를 확인할 수 있다.
terraform destroy
현재 코드를 기반으로 생성된 VPC, 라우팅 테이블 등이 모두 삭제된다.
서브넷 생성
resource "aws_subnet" "example" {
vpc_id = aws_vpc.example.id
cidr_block = "10.0.1.0/24"
availability_zone = "ap-northeast-2a" # 가용 영역 지정
tags = {
Name = "example_subnet"
}
}
variables.tf 도입(중복 제거)
variable "region" {
description = "region" # "region" variable에 관한 설명
default = "ap-northeast-2" # 변수의 값
}
아래와 같이 바꿀 수 있다.
...
provider "aws" {
region = var.region # ap-northeast-2
}
...
resource "aws_subnet" "example" {
vpc_id = aws_vpc.example.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}a" # ap-northeast-2a
...
}
작성 완료된 코드
main.tf
terraform {
cloud {
organization = "yuri-og-1"
workspaces {
name = "yuri-ws-1"
}
}
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.0"
}
}
}
provider "aws" {
region = var.region
}
resource "aws_vpc" "vpc_1" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "${var.prefix}-vpc-1"
}
}
resource "aws_subnet" "sub_1" {
vpc_id = aws_vpc.vpc_1.id
cidr_block = "10.0.1.0/24"
availability_zone = "${var.region}a"
tags = {
Name = "${var.prefix}-sub-1"
}
}
variables.tf
variable "prefix" {
description = "Prefix for all resources"
default = "dev"
}
variable "region" {
description = "region"
default = "ap-northeast-2"
}
'프로젝트 & TIL > 일별 공부 기록 (백엔드 스쿨)' 카테고리의 다른 글
89일차 - 테라폼, AWS EC2, IAM Role, 인스턴스 프로파일, S3와 버킷 (0) | 2023.06.29 |
---|---|
88일차 - 테라폼, 인터넷 게이트웨이와 라우팅 테이블 (0) | 2023.06.28 |
86일차 - AWS, 테라폼 (0) | 2023.06.26 |
85일차 - MongoDB Replica Set vs Sharded Cluster, Strorage Engine (0) | 2023.06.23 |
84일차 - MongoDB Sharded Cluster (0) | 2023.06.22 |