반응형
# AWS로 구성된 기존 인프라를 가져오는 방법에 대해서 설명
1. terraforming을 통한 기존 인프라 코드를 가져오기
- 일단 지금은 AWS만 지원이 되며 Ruby on Rails가 설치 되어 있어야 한다.
https://rubyinstaller.org/downloads/
- 위의 링크에서 Ruby+Devkit 최신버전을 다운받고 설치를 진행한다.
2. cmd 터미널에서 실행하기
- cmd 터미널을 열고 아래의 명령어를 입력한다. 그리고 나면 여러개의 파일을 설치한다.
gem install terraforming
3. 기존 생성된 리소스를 가져오기
- terraforming 명령어를 입력하여 현재 지원 되는 리소스 확인하기
C:\Users>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 ...
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 snss # SNS Subscription
terraforming snst # SNS Topic
terraforming sqs # SQS
terraforming vgw # VPN Gateway
terraforming vpc # VPC
Options:
[--merge=MERGE] # tfstate file to merge
[--overwrite], [--no-overwrite] # Overwrite existing tfstate
[--tfstate], [--no-tfstate] # Generate tfstate
[--profile=PROFILE] # AWS credentials profile
[--region=REGION] # AWS region
[--assume=ASSUME] # Role ARN to assume
[--use-bundled-cert], [--no-use-bundled-cert] # Use the bundled CA certificate from AWS SDK
- ec2가 지원이 되므로 현재 생성되어 있는 ec2 인스턴스 리소스를 가져오는 작업 진행
terraforming ec2
- 결과
resource "aws_instance" "terraforming-webserver" {
ami = "ami-0eddbd81024d3fbdd"
availability_zone = "ap-northeast-2a"
ebs_optimized = false
instance_type = "t2.micro"
monitoring = false
key_name = "webserver"
subnet_id = "subnet-000000000000000"
vpc_security_group_ids = ["sg-00000000000000"]
associate_public_ip_address = true
private_ip = "10.0.1.93"
source_dest_check = true
root_block_device {
volume_type = "gp2"
volume_size = 8
delete_on_termination = true
}
tags {
"Name" = "terraforming-webserver"
}
}
- 오류수정
가져온 값 중 문제가 되는 부분은 vs 코드에서 위의 결과 코드를 붙여서 보면 알 수 있다.
여기서는 두가지의 문제가 존재하는데 첫번째는 private_ip의 설정 값이다. private_ip는 ec2 인스턴스가 생성 되면서 자동으로 부여되는 값이므로 위의 처럼 선언이 되어 있으면 안된다.
그리고 두번째는 태그 값인데, 태그 값의 선언 부분이 잘못 되어 있다.
# 잘못 작성된 구문
tags {
"Name" = "terraforming-webserver"
}
# 정상 구문
tags = {
Name = "terraforming-webserver"
}
위의 두가지만 수정 후 terraform init , plan, apply를 차례대로 진행해주면 정상적으로 1개의 인스턴스가 생성된다.
반응형