본문 바로가기

♻ Terraform(테라폼)/👉 Terraformer

Console에서 새로운 Subnet과 EC2 인스턴스를 추가 후 Terraformer를 통해 import 수행

# AWS Console에서 신규 subnet과 EC2 인스턴스를 생성 후 Terraformer를 통해 import를 수행하는 과정에 대해서 알아본다.

1. AWS Console에서 신규 서브넷 생성

- 아래와 같이 설정 후 subnet 생성

- 확인

2. AWS Console에서 신규 EC2 인스턴스 생성

- 태그값 설정 : terraformer-test-01

2021.10.24 - [⭐ AWS/EC2] - EC2 생성

 

EC2 생성

EC2 인스턴스 생성 1. 인스턴스 시작을 클릭하여 EC2 생성을 시작합니다. 2. 설치할 OS를 확인하고 선택을 클릭합니다. 3. 원하는 스펙을 선택하고 다음으로 넘어 갑니다. 4. 네트워크를 구성 후 다음

may9noy.tistory.com

- 생성 확인

3. Terraformer를 활용하여 현재 상태의 리소스를 import 하기

- 현재 상태는 아래와 같고 모두 1개의 tag 명을 가지고 filter를 수행하여 리소스를 구분하고 있다.

- 원래는 4개의 퍼블릭 서브넷이 생성되어 있는데 그림에는 3개의 퍼블릭 서브넷만 생성하고 routing table은 일부러 연결을 해놓지 않았다.

Bacis_VPC_Terraformer.drawio
0.00MB

- Import 하기, subnet과 ec2만 변경 되었으니, subnet과 ec2 정보만 가져와보자. filter는 역시 terraformer-test-01로 설정한다.

terraformer import aws \
--resources=subnet,ec2_instance \
--regions=ap-northeast-2 \
--filter="Name=tags.Name;Value=terraformer-test-01"

- 결과 확인 : 서브넷 4개의 정보와 1개의 인스턴스를 import 하였다.

2023/03/22 06:00:38 Filtered number of resources for service subnet: 4
2023/03/22 06:00:38 Filtered number of resources for service ec2_instance: 1
2023/03/22 06:00:38 aws Connecting....
2023/03/22 06:00:38 aws save ec2_instance
2023/03/22 06:00:38 aws save tfstate for ec2_instance
2023/03/22 06:00:38 aws save subnet
2023/03/22 06:00:38 aws save tfstate for subnet

4. import한 코드 확인은 생략하고 해당 코드를 로컬 영역에 vs code로 옮겨서 terraform plan하기

- 여기까지는 console에서 생성한 리소스를 terraformer를 통해 terraform 코드로 변경을 하였고, 해당 코드를 로컬로 옮겨서 vs code로 import 시켰다.

여기서 현재 aws 리소스와 동기화를 위해 terraform plan을 해보자.

- ec2_instance 동기화 진행

폴더구조

terraform plan 수행, 변경 사항 없다. 최신 리소스가 반영 되었다고 볼 수 있다.

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are      
needed.

- subnet 동기화 진행

폴더구조

아래와 같은 오류가 나올 수 있는데, map_customer_owned_ip_on_launch = "false", map_public_ip_on_launch = "false" 내용을 주석처리 하고 다시 수행해 주면 정상적으로 실행된다.

│ "map_customer_owned_ip_on_launch": all of `customer_owned_ipv4_pool,map_customer_owned_ip_on_launch,outpost_arn` must be  
│ specified

terraform plan 수행, ec2_instance와 같이 변경 사항 없다. 최신 리소스가 반영 되었다고 볼 수 있다.

No changes. Your infrastructure matches the configuration.

Terraform has compared your real infrastructure against your configuration and found no differences, so no changes are      
needed.

마치며,

AWS 콘솔에서 클릭 클릭 하여 추가한 리소스를 Terraformer를 활용하여 Terraform 코드로 변환하고 plan 까지 수행하여 리소스의 정합성을 검증 하였다.

다음에는 라우팅 테이블을 연결하고 EC2 인스턴스에 아파치 웹서버를 설치하고 Terraformer로 가져오는 작업을 해보자.