이미 생성된 AWS 리소스를 terraform 코드로 삭제

4948 단어 TerraformAWS

소개



aws의 terraform 템플릿을 0에서 쓰는 것은 어쩐지 번거로웠기 때문에, 이미 작성되고 있는 aws 자원으로부터 작성할 수 없을까 조사하고 있었습니다만, terraform import 라고 하는 커멘드로 비슷한 것이 할 수 있었기 때문에 정리합니다.

이번 목표



이번에는 기존 VPC를 terraform의 코드에 일으킬 것입니다.

디렉토리 구성


.
├── config.tf
├── terraform.tfstate
├── vpc.tf
└── .gitignore

아래 준비



1, 초기 설정 파일 만들기



aws의 초기 설정을 하는 파일

config.tf
variable "aws_access_key" {}
variable "aws_secret_key" {}

provider "aws" {
  version    = "~> 3.0"
  access_key = var.aws_access_key
  secret_key = var.aws_secret_key
  region     = "ap-northeast-1"
}

비밀 정보를 할당하는 파일

terraform.tfvars
aws_access_key = "各種取得したaccess_key"
aws_secret_key = "各自取得したsecret_key"

vpc 정보를 작성하는 빈 파일
resource "aws_vpc" "test-tf-vpc" {
  # (resource arguments)
}

ignore 파일

.gitignore
#  Local .terraform directories
**/.terraform/*

# .tfstate files
*.tfstate
*.tfstate.*

# .tfvars files
*.tfvars

2, 기존 vpc import


terraform import リソース名.リソースname リソースID라는 구문을 사용하여 데이터를 가져올 수 있습니다.

$ terraform state show aws_vpc.test-tf-vpc vpc-xxxxxxxx

3, import한 내용을 확인


terraform import リソース名.リソースname라는 구문을 사용하여 가져온 데이터를 확인할 수 있습니다.
$ terraform state show aws_vpc.test-tf-vpc 
resource "aws_vpc" "test-tf-vpc" {
  arn                              = "xxxxxxxxxxxxx"
  assign_generated_ipv6_cidr_block = false
  cidr_block                       = "10.0.0.0/16"
  default_network_acl_id           = "acl-xxxxxxxxxxx"
  default_route_table_id           = "rtb-xxxxxxxxxxx"
  default_security_group_id        = "sg-xxxxxxxxxxx"
  dhcp_options_id                  = "dopt-xxxxxxxxxxx"
  enable_classiclink               = false
  enable_classiclink_dns_support   = false
  enable_dns_hostnames             = true
  enable_dns_support               = true
  id                               = "vpc-xxxxxxxxxxx"
  instance_tenancy                 = "default"
  main_route_table_id              = "rtb-xxxxxxxxxxx"
  owner_id                         = "xxxxxxxxxxxxx"
  tags = {
    "Name" = "test-tf-vpc"
  }
}

vpc.ft에 하드 코딩



import 하면 공식 문서 을 보거나 terraform plan 를 두드리면서 tf 파일을 완성시켜 갑니다

그리고 결국
$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

aws_vpc.test-tf-vpc: Refreshing state... [id=vpc-xxxxxxxxxxxxx]

------------------------------------------------------------------------

No changes. Infrastructure is up-to-date.

This means that Terraform did not detect any differences between your
configuration and real physical resources that exist. As a result, no
actions need to be performed.

라는 문자열이 나타나면 완료됩니다.

마지막으로



사실은 한 명령만으로 모든 리소스를 terraform의 파일에 떨어뜨려 주는 것이 있으면 좋았지만, 그것은 어려울 것 같았기 때문에 이번에는 비교적 노력하는 타입의 것이 되어 버렸습니다 땀
다만, 1개 자신 전용의 terraform 템플릿을 가지고 있으면 무언가와 즐길 수 있는 장면은 많다고 생각하기 때문에 1개는 소지해 두는 것이 좋은 것이 아닐까 생각합니다.

좋은 웹페이지 즐겨찾기