본문 바로가기

클라우드/테라폼(Terraform)

테라폼 Terraform 리소스 변경, 삭제

# Terraform 리소스 변경 

 

# 이미지 변경

AMI 이미지 ID를 ami-0b329fb1f17558744로 변경한다

 

 

# 변경 사항 계획

-/+ 삭제하고 다시 만든다 replacement 교체

이미지만 변경 할 수 없기 때문에 , 기존 이미지를 제거하고 다시 만든다.

 

 

 

# 변경 사항 적용

기존 인스턴스는 제거하고 새로운 인스턴스가 생성된다

 

 

# AWS 콘솔에서 확인

 

 

# terraform.tfstate 파일 확인

terraform.tfstate 파일로 현재 상태를 볼 수 있다.

apply를 하게 되면 terraform.tfstate 텍스트 파일이 생성 되는데 절대 git에 push되지 않도록 주의한다.

json형태의 데이터가 나오는데 apply를 했을 때 실제로 리소스가 만들어지고 상태가 저장된다. 리소스의 정보가 저장된다. 수동으로 수정하지 않는것이 좋다.  파일을 삭제하게 되면 배포 된 인스턴스를 Terraform이 더이상 관리하지 않는다 (import를 시키면 다시 관리 가능). 삭제 후 apply를 하게 되면 새로운 리소스가 생성된다.

 

 

# terraform.tfstate.backup 파일 확인

terraform.tfstate.backup 바로 직전 상태를 보여주는 파일

 

 


 

# 인프라 리소스 삭제

 

# 리소스 삭제

 

# AWS 콘솔에서 확인

 

 

# 삭제 후 terraform.tfstate 파일 확인

리소스가 없다.

 

 

# 삭제 후 terraform.tfstate.backup 파일 확인

 

 

더보기

devops@control:~/aws-example$ vi main.tf
devops@control:~/aws-example$ cat main.tf 
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.34"
    }
  }
}

provider "aws" {
  profile = "default"
  region  = "ap-northeast-2"
}

resource "aws_instance" "my_instance" {
  ami           = "ami-0b329fb1f17558744"
  instance_type = "t3.micro"

  tags = {
    Name = "MyInstance"
  }
}



devops@control:~/aws-example$ terraform plan

devops@control:~/aws-example$ terraform apply

devops@control:~/aws-example$ ls
main.tf  terraform.tfstate  terraform.tfstate.backup
devops@control:~/aws-example$ cat terraform.tfstate

devops@control:~/aws-example$ cat terraform.tfstate.backup 

devops@control:~/aws-example$ terraform destroy