Terraformer를 사용하여 기존 인프라를 코딩합니다.
소개
평소 여러분은 인프라를 어떻게 관리하고 있습니까?
Infrastructure as Code(IaC)라고 당연히 말해지는 가운데 물론 코드상에서 관리하고 있는 분이 많다고 생각합니다.
다만, 한편으로 과도기이거나 긴급하게 구성의 변경을 요구되는 것은 0이 아닙니다.
경미한 변경이라면 쉽게 캡처할 수 있습니다만, 새로운 리소스를 추가했을 때에는 캡처하는 것은 어려운 일이 됩니다.
이번에는 Terraformer 1을 이용하여 기존 인프라를 코딩해 보겠습니다.
기존 인프라 코드화
이번에는 Terraform 및 terraformer 명령을 사용할 수 있습니다.
Terraform backend 등은 올바르게 설정되어 있는 것을 전제로 진행합니다.
이번 실행 환경
보안 그룹 캡처
이번에는 보안 그룹을 신규 추가했다고 여기를 코드화 해 보려고합니다.
※시큐리티 그룹이라면 무언가의 자원에 첨부하고 있을 것입니다만 이번은 생략합니다.
이번에는 다음 보안 그룹을 콘솔에서 만들었습니다.
Terraformer 실행 준비
terraformer import
를 실행할 수 있도록 준비를 진행합니다.개인적으로 Terraformer를 실행하는 디렉토리는 Terraform Working Directory 이외에서 실행하는 것이 좋습니다.
이유는 다음과 같습니다.
그래서 나는 어디까지나 현재의 state를 캡처하는 것을 목적으로 Terraformer를 이용하고 있습니다.
그러면, 적당히
tmp
디렉토리를 작성해 그 디렉토리내에서 terraformer import
를 실행할 수 있도록(듯이) 준비를 진행해 갑니다% mkdir tmp && cd $_
% echo 'provider "aws" {}' > main.tf
% terraform init
Initializing the backend...
Initializing provider plugins...
- Finding latest version of hashicorp/aws...
- Installing hashicorp/aws v3.22.0...
- Installed hashicorp/aws v3.22.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
Terraform has been successfully initialized!
You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
terraform init
를 실행하여 tmp
디렉토리 다음은% tree -a
.
├── .terraform
│ └── providers
│ └── registry.terraform.io
│ └── hashicorp
│ └── aws
│ └── 3.22.0
│ └── darwin_amd64
│ └── terraform-provider-aws_v3.22.0_x5
├── .terraform.lock.hcl
└── main.tf
7 directories, 3 files
terraformer import를 실행합시다.
이번에는 보안 그룹을 가져오므로 다음과 같은 명령을 실행합니다.
% terraformer import aws --resources sg --regions <リージョン名>
2020/12/22 01:20:47 aws importing region ap-northeast-1
2020/12/22 01:20:51 aws importing... sg
2020/12/22 01:20:52 Refreshing state... aws_security_group.tfer--default_sg-xxxx-xxxxxxxx
2020/12/22 01:20:52 aws Connecting....
2020/12/22 01:20:52 aws save sg
2020/12/22 01:20:52 aws save tfstate for sg
import를 실행하면 generated
라는 디렉토리가 생성됩니다.그 안에 AWS에 정의된 모든 보안 그룹이 인코딩되었습니다.
% tree -a
.
├── .terraform
│ └── providers
│ └── registry.terraform.io
│ └── hashicorp
│ └── aws
│ └── 3.22.0
│ └── darwin_amd64
│ └── terraform-provider-aws_v3.22.0_x5
├── .terraform.lock.hcl
├── generated
│ └── aws
│ └── sg
│ ├── outputs.tf
│ ├── provider.tf
│ ├── security_group.tf
│ ├── terraform.tfstate
│ └── variables.tf
└── main.tf
10 directories, 8 files
실제로 생성된 코드를 살펴보자
이번 보안 그룹을 만든 리전에는 10개의 보안 그룹이 있습니다.
이러한 모든 보안 그룹은 한 파일에 출력됩니다.
기사가 필요 이상으로 길어져 버리기 때문에, 이번에 작성한 보안 그룹 이외의 import 결과에 대해서는 생략하겠습니다.
또한
generated/aws/sg/variables.tf
와 generated/aws/sg/terraform.tfstat
에 대해서도 마찬가지입니다.generated/aws/sg/outputs.tf
output "aws_security_group_tfer--mziyut-002D-advent-002D-calendar-002D-2020_sg-xxxx-xxxxxxxxxxxxxxxxx_id" {
value = "aws_security_group.tfer--mziyut-002D-advent-002D-calendar-002D-2020_sg-xxxx-xxxxxxxxxxxxxxxxx.id"
}
generated/aws/sg/provider.tf
provider "aws" {
region = "<ここにリージョン名>"
}
terraform {
required_providers {
aws = {
version = "~> 3.22.0"
}
}
}
generated/aws/sg/security_group.tf
resource "aws_security_group" "tfer--mziyut-002D-advent-002D-calendar-002D-2020_sg-xxxx-xxxxxxxxxxxxxxxxx" {
description = "mziyut advent calender 2020 :tada:"
egress {
cidr_blocks = ["0.0.0.0/0"]
from_port = "0"
protocol = "-1"
self = "false"
to_port = "0"
}
name = "mziyut-advent-calendar-2020"
vpc_id = "vpc-xxxxxxxx"
}
요약
이번에는 Terraformer를 사용하여 기존 인프라를 코딩했습니다.
스스로 인프라 상태에서 Terraform을 기술하는 것보다 몇 배나 효율적으로 진행할 수 있었습니다.
신경이 쓰이는 분은, 한 번 만져 보면 어떻습니까.
마지막으로
Ateam Group Manager & Specialist Advent Calendar 2020 의 23일째는, Increments 주식회사의 @p 히가스이 씨가 보내 드립니다.
GoogleCloudPlatform/terraformer: CLI tool to generate terraform files from existing infrastructure (reverse Terraform). Infrastructure to Code ↩
Reference
이 문제에 관하여(Terraformer를 사용하여 기존 인프라를 코딩합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mziyut/items/5416dca4614f181d9468텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)