import-infrastructure-as-code은(는) 무엇을 하나요?
Azure CLI 탐색과 Azure Verified Modules(AVM)을 사용하여 기존 Azure 리소스를 Terraform으로 가져옵니다. 라이브 Azure 인프라를 역공학하고, 기존 구독/리소스 그룹/리소스 ID로부터 Infrastructure as Code를 생성하고, 종속성을 매핑하며, 다운로드된 모듈 소스에서 정확한 가져오기 주소를 도출하고, 구성 드리프트를 방지하며, 모든 Azure 리소스 유형에서 검증 및 계획이 가능한 AVM 기반 Terraform 파일을 생성해야 할 때 사용됩니다.
작동 방식
이 스킬은 다음 단계로 작동합니다:
- Azure CLI를 통한 리소스 발견 - 제공된 구독 ID, 리소스 그룹 이름, 또는 리소스 ID를 사용하여 라이브 Azure 리소스를 쿼리합니다.
- 종속성 매핑 - 발견된 리소스 간의 종속성을 분석하고 매핑합니다.
- AVM 모듈 소스 다운로드 - 각 리소스 유형에 적합한 Azure Verified Modules 소스를 식별하고 다운로드합니다.
- 가져오기 주소 도출 - 다운로드된 모듈 소스에서 정확한 Terraform 가져오기 주소를 추출합니다.
- Terraform 구성 생성 -
terraform init,terraform plan,terraform import명령을 실행 가능한 AVM 기반 Terraform 파일을 생성합니다.
필수 사전 조건
- Azure CLI (
az)가 설치되어 있고 로그인되어 있어야 합니다. - Terraform (
terraform)이 설치되어 있어야 합니다. - 대상 Azure 구독에 대한 읽기 권한이 필요합니다.
사용 예시
# 구독의 모든 리소스 가져오기
/import-infrastructure-as-code --subscription-id "00000000-0000-0000-0000-000000000000"
# 특정 리소스 그룹 가져오기
/import-infrastructure-as-code --resource-group "my-rg"
# 특정 리소스 ID 가져오기
/import-infrastructure-as-code --resource-id "/subscriptions/.../resourceGroups/.../providers/Microsoft.Compute/virtualMachines/my-vm"
지원되는 Azure 리소스 유형
| 리소스 유형 | AVM 모듈 소스 |
|---|---|
| Virtual Machines | Azure/avm-res-compute-virtualmachine/azurerm |
| Virtual Networks | Azure/avm-res-network-virtualnetwork/azurerm |
| Storage Accounts | Azure/avm-res-storage-storageaccount/azurerm |
| SQL Databases | Azure/avm-res-sql-server/azurerm |
| App Services | Azure/avm-res-web-site/azurerm |
출력 구조
생성된 출력은 다음 파일을 포함합니다:
main.tf- AVM 모듈을 사용한 Terraform 구성terraform.tfvars- 변수 값 정의outputs.tf- 출력 정의providers.tf- AzureRM 공급자 구성import.sh- Terraform 가져오기 명령어를 포함한 셸 스크립트
구성 드리프트 방지
이 스킬은 다음을 통해 구성 드리프트를 방지합니다:
- 라이브 Azure 리소스의 현재 상태를 정확히 반영
- 모든 리소스 속성을 Terraform 구성에 포함
- AVM 모듈의 최신 버전 사용
- 적절한 종속성 순서 보장
문제 해결
일반적인 문제
- Azure CLI 인증 오류 -
az login으로 로그인되어 있는지 확인하세요. - 리소스를 찾을 수 없음 - 제공된 구독 ID, 리소스 그룹 이름, 또는 리소스 ID가 올바른지 확인하세요.
- AVM 모듈을 찾을 수 없음 - 리소스 유형에 대한 AVM 모듈이 존재하는지 확인하세요.