본문 바로가기

DevOps

[Terraform] 기존 리소스 가져오기 terraforming 설치 및 사용

Terraform으로 클라우드 리소스를 관리할 때 처음부터 설정 파일을 작성하고 terraform apply로 적용하여 리소스를 create 하는 경우도 있지만, 기존의 리소스를 가져와 terrform으로 관리하는 경우도 존재합니다.

Terraform에서는 공식적으로 terraform import라는 명령어 통해 클라우드 리소스를 가져오도록 지원합니다. 하지만 terraform import는 terraform.state 상태 파일에만 적용될 뿐 .tf 설정 파일에는 적용되지 않습니다. 따라서 import를 사용해서 리소스를 가져올 경우엔 리소스에 대한 변경, 삭제를 못하거나 수동으로 .tf 설정 파일을 작성해 줘야 합니다.

수동으로 .tf 설정 파일을 작성하는 것은 매우 번거롭고 어려운 일입니다. 이를 도와는 terraforming 이라는 Ruby 프로젝트가 있습니다.

terraforming 설치 방법

  • ruby 설치
  • $ gem install terraforming
  • aws configure (.aws 폴더에 credential 및 config 생성)

terraforming은 “terraforming <서비스명>” 명령어로 간단하게 설정 코드(.tf)를 얻을 수 있습니다.

terraforming이 지원하는 서비스명은 다음과 같습니다.

$ terraforming
Commands:
  terraforming alb             # ALB
  terraforming asg             # AutoScaling Group
  terraforming cwa             # CloudWatch Alarm
  terraforming dbpg            # Database Parameter Group
  terraforming dbsg            # Database Security Group
  terraforming dbsn            # Database Subnet Group
  terraforming ddb             # DynamoDB
  terraforming ec2             # EC2
  terraforming ecc             # ElastiCache Cluster
  terraforming ecsn            # ElastiCache Subnet Group
  terraforming efs             # EFS File System
  terraforming eip             # EIP
  terraforming elb             # ELB
  terraforming help [COMMAND]  # Describe available commands or one specific command
  terraforming iamg            # IAM Group
  terraforming iamgm           # IAM Group Membership
  terraforming iamgp           # IAM Group Policy
  terraforming iamip           # IAM Instance Profile
  terraforming iamp            # IAM Policy
  terraforming iampa           # IAM Policy Attachment
  terraforming iamr            # IAM Role
  terraforming iamrp           # IAM Role Policy
  terraforming iamu            # IAM User
  terraforming iamup           # IAM User Policy
  terraforming igw             # Internet Gateway
  terraforming kmsa            # KMS Key Alias
  terraforming kmsk            # KMS Key
  terraforming lc              # Launch Configuration
  terraforming nacl            # Network ACL
  terraforming nat             # NAT Gateway
  terraforming nif             # Network Interface
  terraforming r53r            # Route53 Record
  terraforming r53z            # Route53 Hosted Zone
  terraforming rds             # RDS
  terraforming rs              # Redshift
  terraforming rt              # Route Table
  terraforming rta             # Route Table Association
  terraforming s3              # S3
  terraforming sg              # Security Group
  terraforming sn              # Subnet
  terraforming snst            # SNS Topic
  terraforming snss            # SNS Subscription
  terraforming sqs             # SQS
  terraforming vgw             # VPN Gateway
  terraforming vpc             # VPC