Workspace
Terraform Workspace 목록 확인
terraform workspace listdefault Workspace의 상태를 파일 형식으로 저장
terraform state pull > default.tfstatedefault Workspace의 상태를 기반으로 새로운 Workspace를 생성
terraform workspace new --state=default.tfstate koreaTerraform Workspace 목록 확인
terraform workspace list인프라 변경 사항 확인
terraform planAWS 설정 파일에 아래와 같은 블록 추가
[profile korea] region = ap-northeast-2 [profile us] region = us-east-1AWS 자격증명에 있는 default 자격증명 코드 블록을 복사/붙여넣기 하고 아래와 같은 이름으로 지정
[default] aws_access_key_id = xxxxxxxxxxxxxxxx aws_secret_access_key = zzzzzzzzzzzzzzzzzzzzzzzzzzzzz [korea] aws_access_key_id = xxxxxxxxxxxxxxxx aws_secret_access_key = zzzzzzzzzzzzzzzzzzzzzzzzzzzzz [us] aws_access_key_id = xxxxxxxxxxxxxxxx aws_secret_access_key = zzzzzzzzzzzzzzzzzzzzzzzzzzzzzprovider.tf 파일에 아래와 같은 코드 블록 추가
provider "aws" { profile = "${terraform.workspace}" default_tags { tags = { Environment = terraform.workspace } } }인프라 변경 사항 확인
terraform plan새로운 Workspace 생성
terraform workspace new usTerraform Workspace 목록 확인
terraform workspace list인프라 변경 사항 확인
terraform planvariable.tf 파일을 생성하고 아래의 블록 추가
variable "environment" { description = "환경 이름" type = string } variable "vpc_cidr" { description = "VPC 대역대" type = string }us.tfvars 파일을 생성하고 아래의 코드 블록 추가
environment = "us-dev" vpc_cidr = "10.20.0.0/16"VPC를 생성하는 코드 블록을 아래와 같이 수정
module "network" { source = "terraform-aws-modules/vpc/aws" version = "5.7.1" name = var.environment cidr = var.vpc_cidr azs = data.aws_availability_zones.azs.names public_subnets = [for idx, _ in data.aws_availability_zones.azs.names: cidrsubnet(var.vpc_cidr, 8, idx)] map_public_ip_on_launch = true }인프라 변경 사항 확인
terraform plan --var-file="us.tfvars"인프라 변경 사항 반영
terraform apply --var-file="us.tfvars" --auto-approveEC2 인스턴스가 생성되었는지 확인
aws ec2 describe-instances --profile us --no-cli-pagerEC2를 생성하는 코드 블록을 아래와 같이 수정
module "ec2_instance" { source = "terraform-aws-modules/ec2-instance/aws" version = "5.6.1" instance_type = terraform.workspace != "korea" ? "t3.small" : "t3.micro" subnet_id = module.network.public_subnets[0] create_iam_instance_profile = true iam_role_policies = { "ssm" = "arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore" } }인프라 변경 사항 확인
terraform plan --var-file="us.tfvars"인프라 변경 사항 반영
terraform apply --var-file="us.tfvars" --auto-approveEC2 인스턴스 타입이 변경되었는지 확인
aws ec2 describe-instances --profile us --no-cli-pager | grep -i type리소스 삭제
{ terraform destroy --var-file="us.tfvars" --auto-approve terraform workspace select korea terraform destroy --var="environment=demo" --var="vpc_cidr=10.100.0.0/16" --auto-approve cd ~/environment && rm -rf terraform }
Last updated