위 링크에서 사용중인 OS 환경에 맞게 다운로드
chmod +x terraformer-all-linux-amd64
sudo mv terraformer-all-linux-amd64 /usr/local/bin/terraformer
chmod +x terraformer-all-darwin-arm64
sudo mv terraformer-all-darwin-arm64 /usr/local/bin/terraformer
or
brew install terraformer
Provider를 설치할 디렉토리 생성(Apple Silicon Mac)
mkdir -p ~/.terraform.d/plugins/darwin_arm64
해당 경로에 위 링크에서 원하는 Provider 파일 다운로드 및 Unzip
wget https://releases.hashicorp.com/terraform-provider-aws/5.22.0/terraform-provider-aws_5.22.0_darwin_arm64.zip -P ~/.terraform.d/plugins/darwin_arm64/
unzip ~/.terraform.d/plugins/darwin_arm64/terraform-provider-aws_5.22.0_darwin_arm64.zip
terraformer import aws --resources=<Terraformer용 Resource Type> --path-pattern="{output}/" --regions=<Region>
terraformer import aws --resource=vpc,subnet,igw --path-pattern="{output}/" --regions=ap-northeast-2
--resources, -r: Terraform 코드로 import할 대상을 지정한다. * 지정 가능
https://github.com/GoogleCloudPlatform/terraformer#table-of-contents
위 링크에서 Terraform 코드화 대상을 선택하여 지원하는 Resource들을 살펴볼 수 있다.
아래의 형식을 따름
Terraformer에서 쓰이는 Resource Type
Terraform 코드화될 Resource Type1
Terraform 코드화될 Resource Type2
Terraform 코드화될 Resource Type3
...

--path-pattern, -o: 지정하지 않을 경우 각각의 리소스 별로 디렉토리가 생성되어 해당 디렉토리 안에 .tf 파일이 생성된다.
--output, -O: 포멧을 hcl, json 중에 선택할 수 있다.(Default: hcl)
--excludes. -x: 지정한 대상을 제외하고 Terraform 코드로 import한다.
--resources="*" --excludes="iam"--filter, -f: Terraform 코드로 import할 대상에 필터를 적용한다. ;
Name: 필드 이름만 가져올 때 사용
terraformer import aws --resources=s3 --filter="Name=tags.Abc" --regions=ap-northeast-2
Abc라는 Tag가 있는 S3 Resource만 가져옴
Type: 여러 유형의 Resource 중에서 하나만 필터링해야 할 때 사용
terraformer import aws -r sg,vpc --filter="Type=sg;Name=tags.Name" --regions=ap-northeast-2
vpc와 sg Resource 중 Name이라는 Tag가 있는 sg Resource만 가져옴
Value: Name 필터로 지정한 필드의 값을 지정해서 가져옴
terraformer import aws -r=ec2_instance --filter="Name=tags.Name;Value=hognod-ec2" --region=ap-northeast-2
ec2_instance Resource 중 Name이라는 Tag의 값이 hognod-ec2인 Resource만 가져옴
terraformer로 추출한 코드를 이용하여 Infra를 생성하기 위해 terraform init 명령어 실행 시, 아래와 같은 Error가 발생할 수 있다.
│ Error: Invalid legacy provider address
│
│ This configuration or its associated state refers to the unqualified provider "aws".
│
│ You must complete the Terraform 0.13 upgrade process before upgrading to later versions.
이는 terraform.tfstate 파일의 provider 부분이 잘못되어 발생하는 Error로 아래 명령어로 해당 부분을 수정하면 정상 동작하는 것을 확인할 수 있다.
terraform state replace-provider -- -/aws hashicorp/aws