IaC는 인지한 순간 바로 도입하는 게 가장 적합한 때이다.
cf) 어떤 언어나 기술을 공부할 때 어떻게 공부를 해야할까요?
지금 당장 설치하고 작성해서 무언가를 만들어기!
# AWS Provider
provider "aws" {
region = "ap-northeast-2"
version = "~>3.0"
}
# Create a VPC
resource "aws_vpc" "example" { // resource "리소스의 이름" "실제 이름"
cidr_block = "10.0.0.0/16"
# cidr_block 이외에도 수많은 인자 존재
}
파일명 : terraform.tfstate
수천 줄, 수만 줄까지 증가 가능
주의) 현재 인프라의 실제 상태 ❌ → state 파일과 현재 인프라의 상태를 똑같이 유지하는 게 중요!
원격 저장소인 “backend”에도 저장(대부분 현업)
{
"version": 4,
"terraform_version": "0.12.24",
"serial":3,
"lineage":"3c77XXXX-2de4-7736-1447-038974a3c187", // 나중에 알아야 하는 값
"outputs":{},
"resources":[
{...},
{...}
]
}
resource "aws_vpc" "default" {
cidr_block = "10.0.0.0/16"
#cidr_block 외에도 수많은 인자 존재
}
output "vpc_id" {
value = aws_vpc.default.id
}
output "cidr_block" {
value = "aws_vpc.default.cidr_block
}
module "vpc" {
source = ":./_modules/vpc"
cidr_block = "10.0.0.0/16"
}
원격 참조 개념으로 이해
key 값에 명시한 state에서 output으로 저장된 변수들 가져옴
data "terraform_remote_state" "vpc" {
backend = "remote"
config = {
bucket = "terraform-s3-bucket"
region = "ap-northeast-2"
key = "terraform/vpc/terraform.tfstate" // 여기에 저장된 state 값 참조 가능
}
}
Init → Plan → Apply
출처 : 처음 시작하는 Infrastructure as Code: AWS & 테라폼