기존 리소스 가져오기
이미 존재하는 클라우드 인프라를 Terraform 상태로 가져와 기존 리소스를 IaC 관리 대상으로 편입하는 방법을 학습합니다.
기존 리소스 가져오기은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
기존 인프라를 IaC로 가져오기
때로는 수동으로 만들었거나 다른 도구로 생성한 클라우드 리소스가 있을 수 있습니다. Terraform 가져오기를 사용하면 이러한 기존 리소스를 Terraform의 관리 대상에 포함할 수 있습니다.
이제 Terraform이 해당 리소스의 상태를 추적하고, 향후 변경 사항을 구성 파일을 통해 적용할 수 있다는 뜻입니다. 이는 "브라운필드" 환경에서 코드형 인프라(IaC)를 도입하기 위한 핵심 단계입니다.
가져오기가 필요한 경우
가져오기는 다음과 같은 상황에서 유용합니다.
- 기존 인프라 마이그레이션: Terraform 외부에서 생성한 리소스를 IaC 작업 흐름에 포함합니다.
- Terraform의 점진적 도입: 모든 것을 다시 만들지 않고 기존 리소스부터 시작합니다.
- 상태 손실 복구: 상태 파일을 잃어버린 경우 Terraform과 리소스의 연결을 다시 설정합니다(원격 상태를 사용하면 이런 일은 드뭅니다).
가져오기 명령어 익히기
terraform import 명령어의 기본 구조는 간단합니다. 이 명령어는 클라우드 제공업체에서 기존 리소스를 찾아 상태 파일에 추가하고, 구성의 리소스 블록과 연결하도록 Terraform에 지시합니다.
여기에는 두 가지 주요 정보가 필요합니다. 리소스의 Terraform 주소와 해당 리소스에 대한 클라우드 제공업체의 ID입니다.
리소스 주소란 무엇인가요?
리소스 주소는 Terraform이 구성 내 특정 리소스를 식별하는 방식입니다. 다음 패턴을 따릅니다: resource_type.resource_name.
resource_type: 리소스 유형입니다(예:aws_s3_bucket,azurerm_resource_group).resource_name: Terraform 구성에서 리소스에 지정하는 로컬 이름입니다(예:my_bucket,web_app).
이 주소는 .tf 파일에 이미 존재해야 합니다.
클라우드 ID 찾기
클라우드 제공업체(AWS, Azure, GCP 등)의 모든 리소스에는 흔히 ID라고 부르는 고유 식별자가 있습니다. Terraform에 가져올 기존 리소스가 정확히 무엇인지 알려면 이 ID가 필요합니다.
이 ID는 클라우드 제공업체의 콘솔이나 CLI, API를 통해 찾을 수 있습니다. 예를 들어 AWS S3 버킷의 ID는 버킷 이름이고, EC2 인스턴스에는 i-0abcdef1234567890과 같은 인스턴스 ID가 있습니다.
가져오기 전에 HCL 정의하기
중요한 단계: terraform import를 실행하기 전에 Terraform 구성 파일(.tf 파일)에 이에 대응하는 리소스 블록을 정의해야 합니다.
이 블록은 Terraform에 예상되는 리소스 유형과 리소스가 가져야 할 ATTRIBUTE를 알려 줍니다. Terraform은 가져오기 중 이 정의를 사용하여 리소스의 스키마를 파악합니다.
S3 버킷용 HCL
이름이 my-existing-coddykit-bucket-123인 기존 AWS S3 버킷이 있다고 가정해 보겠습니다. 먼저 main.tf에 해당 리소스 블록을 정의하세요.
resource "aws_s3_bucket" "my_imported_bucket" {
bucket = "my-existing-coddykit-bucket-123"
# Add other expected attributes if known
# e.g., acl = "private"
}S3 버킷 가져오기
이제 HCL 정의가 있으므로 terraform import 명령어를 실행할 수 있습니다. my-existing-coddykit-bucket-123을 기존 버킷의 실제 이름/ID로 바꾸세요.
디렉터리에서 이미 terraform init을 실행했는지 확인하세요!
terraform import aws_s3_bucket.my_imported_bucket my-existing-coddykit-bucket-123Terraform 상태 확인
가져오기가 성공하면 Terraform이 해당 리소스를 상태 파일에 추가합니다. terraform state show를 사용하면 이를 확인할 수 있으며, 이 명령어는 Terraform이 인식하는 가져온 리소스의 ATTRIBUTE를 표시합니다.
그런 다음 반드시 terraform plan을 실행하여 HCL과 가져온 리소스의 실제 상태 사이에 예상하지 못한 차이가 없는지 확인하세요.
terraform state show aws_s3_bucket.my_imported_bucket빠른 확인: 가져오기 순서
기존 AWS EC2 인스턴스를 Terraform으로 가져오려고 합니다. terraform import 명령어를 실행하기 전에 다음 중 어떤 단계를 반드시 완료해야 하나요?
복습: 인프라를 Terraform으로 가져오기
terraform import를 사용하여 기존 클라우드 리소스를 Terraform의 관리 대상에 포함하는 방법을 배웠습니다.
- 먼저 HCL에 리소스 블록을 정의합니다.
- 그다음 클라우드 제공업체의 리소스 ID를 확인합니다.
- 마지막으로
terraform import ADDRESS ID를 실행합니다. - 항상
terraform plan을 실행하여 차이를 조정하세요.
이 강력한 명령어는 수동으로 관리하는 인프라와 완전히 IaC를 기반으로 하는 환경 사이의 간극을 메워 줍니다.
자주 묻는 질문
“기존 리소스 가져오기” 강의는 무료인가요?
네 — “기존 리소스 가져오기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“기존 리소스 가져오기”에서 뭘 배우나요?
이미 존재하는 클라우드 인프라를 Terraform 상태로 가져와 기존 리소스를 IaC 관리 대상으로 편입하는 방법을 학습합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“기존 리소스 가져오기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.