티스토리 뷰
Terraform Import?
Terraform에서 Import는 Terrafomr을 통해서 생성된 Resource가 아니라 AWS Console을 통해서 직접 추가한 Resource나 다른 Terraform 환경에서 생성한 Resource를 가져오기 위해 제공되는 CLI 명령이다.
사용하는 이유는 Terrafomr은 tfstate파일에 있는 Resource만 본다는 점 때문이다.
이런 Terraform Import를 사용하는 간단한 예시를 살펴보고 몇 가지 특징에 대해서 정리해본다.
1. AWS IAM User에 대한 Resource를 가져오기
이와 같이 AWS Console 상에서는 총 5개의 IAM User를 확인할 수 있다.
그러나, Terraform의 tfstate파일에는 이러한 정의가 되어있지 않기 때문에 사용자가 있다고 판단하지 않는다. 때문에 ch4njun이라는 사용자의 내용을 수정하고 싶어서 resource를 생성하고 수정하려 해도 없기 때문에 IAM User를 생성하기 위해 동작한다. 그 결과 중복된 IAM User 이름이라는 에러와 함께 실패하게 된다.
때문에 Import CLI 명령어를 사용해 Terraform tfstate 파일에 resource에 대한 정보를 가져와야 한다.
우선 resource가 들어갈 공간을 만들어 줘야한다. 이게 없다면, 아래와 같은 에러가 발생한다.
때문에 resource가 들어갈 수 있는 공간을 반드시 만든 후 import 명령어를 실행해야 한다.
정상적으로 import 명령어가 수행된 것을 확인할 수 있다. 여기서 id는 IAM User의 이름이 사용됬지만, 애매하다면 그냥 단순하게 Resource의 Arn을 사용하면 된다.
정상적으로 실행됐음에도 main.tf에 정의된 resource정보엔 변화가 없는 것을 확인할 수 있다. 이처럼 Resource를 불러온다고 resource에 대한 정보가 모두 코드화되어 들어오는 것은 아니다.
때문에 이 상태에서 plan, apply 명령어를 수행하게 된다면 해당 resource에 대한 데이터가 모두 사라질 수 있기 때문에 반드시 주의를 해야한다.
terraform.tfstate 파일을 보면 리소스에 대한 정보가 정상적으로 읽어져온 것을 확인할 수 있다.
2. 암호정책 가져오기
내가 어떤 Resource에 대해서 선언 형식이나 내용이 궁금하다면 Terraform Docs를 확인하면 된다.
registry.terraform.io/providers/hashicorp/aws/latest/docs/resources
마찬가지로 이와같이 Resource가 들어갈 공간을 만든다.
마찬가지로 Terraform Docs에서 Import할 때 사용하는 명령어 포맷을 확인할 수 있다.
정상적으로 Resource가 Import된 것을 확인할 수 있다.
3. 정책 가져오기
위 ec2-read-only 정책을 가져오기 위한 공간을 생성하고 import 명령어를 수행한다.
이번에는 id를 해당 Resource의 Arn을 사용한 것을 확인할 수 있다.
terraform.tfstate 파일에 정상적으로 해당 Resource에 대한 정보가 들어온 것을 확인할 수 있다. 48번째 줄을 확인하면 Policy에 대한 정보까지 확인할 수 있다. 이를 output으로 출력하면 Json 형태로 정책을 확인할 수 있다.
'Cloud > Terraform' 카테고리의 다른 글
[Cloud AWS] Terraform을 사용한 인프라 구성2 (2) | 2021.02.01 |
---|---|
[Cloud AWS] Terraform을 사용한 인프라 구성1 (0) | 2021.02.01 |
[Cloud AWS] Terraform AWS S3에 terraform.tfstate 저장하기 (Remote State Storage) (0) | 2020.09.15 |
[Cloud AWS] Terraform 입력/출력 변수 선언 (0) | 2020.09.10 |
[Cloud AWS] Terraform 문법 Cheat Sheet (0) | 2020.09.07 |