이미 생성된 AWS 리소스를 terraform 코드로 삭제
소개
aws의 terraform 템플릿을 0에서 쓰는 것은 어쩐지 번거로웠기 때문에, 이미 작성되고 있는 aws 자원으로부터 작성할 수 없을까 조사하고 있었습니다만, terraform import
라고 하는 커멘드로 비슷한 것이 할 수 있었기 때문에 정리합니다.
이번 목표
이번에는 기존 VPC를 terraform의 코드에 일으킬 것입니다.
디렉토리 구성
.
├── config.tf
├── terraform.tfstate
├── vpc.tf
└── .gitignore
아래 준비
1, 초기 설정 파일 만들기
aws의 초기 설정을 하는 파일
config.tfvariable "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.tfvarsaws_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개는 소지해 두는 것이 좋은 것이 아닐까 생각합니다.
Reference
이 문제에 관하여(이미 생성된 AWS 리소스를 terraform 코드로 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takehanKosuke/items/93b9922f0d082c9a2655
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 기존 VPC를 terraform의 코드에 일으킬 것입니다.
디렉토리 구성
.
├── config.tf
├── terraform.tfstate
├── vpc.tf
└── .gitignore
아래 준비
1, 초기 설정 파일 만들기
aws의 초기 설정을 하는 파일
config.tfvariable "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.tfvarsaws_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개는 소지해 두는 것이 좋은 것이 아닐까 생각합니다.
Reference
이 문제에 관하여(이미 생성된 AWS 리소스를 terraform 코드로 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takehanKosuke/items/93b9922f0d082c9a2655
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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"
}
aws_access_key = "各種取得したaccess_key"
aws_secret_key = "各自取得したsecret_key"
resource "aws_vpc" "test-tf-vpc" {
# (resource arguments)
}
# Local .terraform directories
**/.terraform/*
# .tfstate files
*.tfstate
*.tfstate.*
# .tfvars files
*.tfvars
$ terraform state show aws_vpc.test-tf-vpc vpc-xxxxxxxx
$ 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"
}
}
$ 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개는 소지해 두는 것이 좋은 것이 아닐까 생각합니다.
Reference
이 문제에 관하여(이미 생성된 AWS 리소스를 terraform 코드로 삭제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takehanKosuke/items/93b9922f0d082c9a2655텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)