Terraformer
Terraformer는 다양한 클라우드 서비스에서 인프라를 코드로 변환하기 위한 도구로,
Terraform 코드를 자동으로 생성해주는 오픈 소스
왜 사용하는가?
-
클라우드 인프라를 코드로 변환: Terraformer는 AWS, Azure, Google Cloud Platform 등 다양한 클라우드 서비스에서 현재의 인프라를 Terraform 코드로 변환
-
코드 재사용 및 관리 용이성: 기존 클라우드 환경을 Terraform 코드로 변환하면, 인프라를 코드로 관리하는 장점을 활용가능하며 코드의 재사용성이 높아지며, 변경 이력을 추적하고 관리 가능
-
멀티클라우드 환경 지원: Terraformer는 다양한 클라우드 서비스를 지원하므로, 멀티클라우드 환경에서도 일관된 인프라 관리가 가능
장점
-
다양한 클라우드 지원: AWS, Azure, Google Cloud Platform을 비롯한 다양한 클라우드 서비스에서 인프라를 코드로 변환
-
소스 코드의 유연성: 생성된 Terraform 코드는 사용자가 필요에 맞게 수정할 수 있어 유연성이 뛰어남
-
인프라 변경 추적: Terraformer를 사용하면 기존 인프라를 코드로 변환함으로써, 변경 이력을 추적하고 관리가능
단점
-
모든 리소스 자동 인식 어려움: 모든 클라우드 리소스가 자동으로 Terraform 코드로 인식되지 않을 수 있음 . 특히, 특정 서비스에 대한 지원이 미흡할 수 있다.
-
일부 서비스에 대한 제약 사항: 특정 클라우드 서비스의 경우 Terraform 코드 생성에 제약이 있을 수 있다.
어떻게 사용하는가?
Terraformer는 커맨드 라인 도구로 사용됩니다. 아래는 간단한 사용 예시이다:
# AWS 인프라를 코드로 변환
terraformer import aws --resources=all --regions=us-east-1
# 생성된 코드를 출력
terraformer code
사전준비
테라포머를 실행하려면 다음 4가지 작업이 필요하다.
- 실행환경 준비
- 권한 만들기
- 테라폼 설치 및 설정
- 테라포머 설치
1. 실행환경 준비
프로덕션 환경의 경우 :
State 파일에는 클라우드의 구성 정보나 시크릿 등의 기밀 정보가 포함되기 때문에
프로덕션 환경을 구축하는 경우에는 별도 액세스를 제한한
가상 머신(AWS이면 특정 작업자만 로그인 가능한 EC2 인스턴스)를 준비 해야함
테스트 환경의 경우 :
본인 사용 PC및 노트북필요
2. 권한 작성
AWS의 경우 AWS 관리형 정책 "ReadOnlyAccess"가 부여된
1. IAM 역할을 생성하여 작업자의 IAM 사용자에게 연결한다.
2. IAM 사용자에게 연결할 자격 증명(액세스 키 및 비밀 키)을 발급
3. 참조 가능한 범위를 제한하는 정책을 추가
("ReadOnlyAccess"는 대상 AWS 계정의 모든 클라우드 리소스에 대한 읽기 권한임)
3. 테라폼 설치 및 설정
4. 테라포머 설치
Mac
brew tap cloudskiff/tap
brew install terraformer
Linux
# 최신 릴리스를 확인하고 해당 URL로 대체
wget https://github.com/cloudskiff/terraformer/releases/download/v0.10.6/terraformer-linux-amd64
mv terraformer-linux-amd64 terraformer
chmod +x terraformer
sudo mv terraformer /usr/local/bin/
Windows
GitHub Release에서 바이너리 다운로드: GitHub Releases
Docker를 사용할 수도 있습니다:
docker run -it --rm -v $(pwd):/app cloudskiff/terraformer