다음을 통해 공유


Terraform용 Azure 내보내기 작동 방식

이 문서에서는 Terraform용 Azure 내보내기 워크플로를 소개합니다. 이 문서에서는 도구의 모범 사례 지침, 현재 제한 사항 및 이러한 제한을 완화하는 방법에 대해 알아봅니다.

대화형 모드

기본적으로 Terraform용 Azure Export는 대화형 모드에서 실행됩니다. 대화형 모드에서 실행하면 사용 가능한 바로 가기 키가 디스플레이 아래쪽에 나열됩니다.

과업 키보드 단축키
탐색
리소스 목록에서 이전 항목을 선택합니다. 또는 k
리소스 목록에서 다음 항목을 선택합니다. -또는- j
리소스 목록의 이전 페이지로 이동합니다. -또는- h -또는- 페이지 위로 이동
리소스 목록에서 다음 페이지로 이동합니다. -또는- l -또는- 페이지 아래로
리소스 목록의 시작 화면으로 이동합니다. g -or- Home
리소스 목록의 끝으로 이동합니다. G -또는- End
건너뛸 리소스 선택
리소스 건너뛰기(또는 "건너뛰기"로 표시된 경우 건너뛰기 해제) 삭제하다
필터 작업
리소스 목록에서 텍스트로 필터를 정의합니다. /
현재 필터 지우기 Esc
작업 저장
리소스 목록의 매핑 파일을 저장합니다. 출력 파일은 건너뛰기(필터링은 아님)의 영향을 받습니다. s
리소스를 상태로 내보내고(지정되지 않은 경우 --hcl-only ) 구성을 생성합니다. w
사용자 환경
현재 리소스에 대한 권장 사항을 표시합니다. r
리소스 내보내기 오류(있는 경우)를 표시합니다. e
도움말을 표시합니다. ?
사임하다
대화형 모드를 종료합니다. q

각 리소스에 대해 Terraform용 Azure Export는 해당 Terraform 리소스 유형을 인식하려고 시도합니다. 일치 항목을 찾으면 줄에 다음 표시 💡기가 표시됩니다.

리소스를 확인할 수 없는 경우 Terraform 리소스 주소를 다음 형식 <resource type>.<resource name>으로 입력해야 합니다. 예를 들어 azurerm_linux_virtual_machine.test 구성 파일에 사용되는 가상 머신의 이름을 참조하는 동안 test Terraform 리소스 유형을 참조합니다.

선택한 리소스에 사용 가능한 리소스 종류를 보려면 r 키를 누릅니다.

경우에 따라 해당 Terraform 리소스가 없는 Azure 리소스가 있습니다(예: 리소스에 Terraform 지원이 없는 경우). 일부 리소스는 가상 머신을 프로비전할 때 생성되는 OS 디스크 리소스와 같은 다른 리소스를 프로비전하는 부작용으로 생성될 수도 있습니다. 이러한 경우 아무 것도 할당하지 않고 리소스를 건너뛸 수 있습니다.

가져올 모든 리소스를 통과한 후 w 키를 눌러 Terraform 구성 생성을 시작하고(선택되지 않은 경우 --hcl-only ) Terraform 상태로 가져오기를 시작합니다.

비대화형 모드

기본적으로 Terraform용 Azure Export는 대화형 모드에서 실행됩니다. 도구가 비대화형 모드에서 실행되도록 지정하려면 플래그를 지정합니다 --non-interactive .

aztfexport [command] --non-interactive <scope>

중요합니다

Terraform용 Azure Export를 실행하는 디렉터리가 비어 있지 않으면 --overwrite 플래그와 함께 --hcl-only 플래그를 추가해야 합니다.

핵심 워크플로에 대한 모범 사례

기본 수준에서 Azure Export의 모든 사용자는 다음 두 옵션 간의 결정에 직면합니다.

다음 하위 섹션에서는 시나리오에 따라 취할 옵션에 대한 지침을 제공합니다.

인프라 관리

구성된 리소스가 원하는 방식으로 환경 내에서 동작하는지 확인하지 않은 경우 상태를 내보내지 않아도 될 수 있습니다.

워크플로를 사용하여 Terraform terraform init plan apply 의 리소스 집합을 관리하려는 경우 상태로 내보내는 것이 중요합니다.

리소스를 관리 할지 확신이 서지 않는 경우, --hcl-only 플래그를 전달하는 것이 좋습니다.

기존 인프라

기존 Terraform 환경으로 내보내는 시나리오에서는 특히 기존 환경에 추가하기 전에 --hcl-onlyterraform 계획에 해당하는 것으로 간주하면 유용할 수 있습니다.

terraform apply 명령은 해당 구성이 기존 상태로 연결되는 동안 리소스를 내보내는 것과 같습니다. 이 시나리오에서 매핑 파일을 사용하면 런타임을 절약하여 리소스를 나열하고 매핑할 수 있습니다.

인프라 발견

환경 내에 어떤 리소스가 있는지 잘 모르는 경우 플래그를 지정하여 --generate-mapping-file 확인할 수 있습니다. 이 주제에 대한 자세한 내용은 Terraform용 Azure Export를 사용하여 사용자 지정된 리소스 선택 및 이름 지정 탐색을 참조하세요.

제한점

Terraform용 Azure Export는 Azure 인프라를 Terraform 코드 및 상태로 변환하려는 복잡한 도구입니다. 현재 알려진 제한 사항은 다음 하위 섹션에서 설명합니다.

속성 간의 상호 제약 조건

AzureRM 공급자는 서로 충돌하는 두 개의 속성을 설정할 수 있습니다. Terraform용 Azure Export에서 충돌하는 속성을 읽을 때 사용자가 하나만 구성했음에도 불구하고 두 속성을 동일한 값으로 설정할 수 있습니다. 여러 속성 간 제약 조건이 동일한 생성된 구성 내에 있을 때 추가적인 복잡성이 발생합니다. 이 문제를 완화하려면 구성 내에서 속성 간 충돌이 있는 위치를 알고 있어야 합니다.

리소스 범위를 벗어난 인프라

Azure Export for Terraform을 사용하여 리소스 범위를 대상으로 지정하는 경우 구성에 필요한 리소스가 지정된 범위 외부에 있을 수 있습니다. 한 가지 예는 역할 할당입니다. 사용자는 범위를 벗어난 리소스를 식별해야 합니다.

쓰기 전용 속성

Azure Export는 구성 내에서 쓰기 전용 속성(예: 암호)을 생성할 수 없습니다. 새 리소스 집합을 만들려면 쓰기 전용 속성에 대해 알고 구성에서 정의해야 합니다.

코딩 표준과 일치하도록 코드 수정

사용자가 코딩 표준을 준수하도록 코드를 수정하려는 경우 몇 가지 필요한 작업이 있습니다. 이러한 단계는 사용자가 비샌드박스 환경에서 코드를 사용하려는 경우에만 필요합니다.

속성 정의 리소스

Azure의 특정 리소스는 부모 Terraform 리소스의 속성 또는 개별 Terraform 리소스로 정의할 수 있습니다. 한 가지 예는 서브넷입니다. Terraform용 Azure Export는 리소스를 개별 리소스로 정의하지만 기존 코딩 구성과 일치시키는 것이 가장 좋습니다.

명시적 종속성

Terraform용 Azure Export는 현재 명시적 종속성만 선언할 수 있습니다. 필요한 암시적 종속성을 포함하도록 코드를 리팩터링하려면 리소스 간의 관계 매핑을 알고 있어야 합니다.

하드 코딩된 값

Terraform용 Azure Export는 현재 하드 코딩된 문자열을 생성합니다. 모범 사례로 이러한 값을 변수로 리팩터링해야 합니다. 또한 플래그를 --full-properties 사용하여 모든 속성을 노출하는 경우 생성된 구성에서 일부 중요한 정보(예: 비밀)를 볼 수 있습니다. 권장 사례를 사용하여 이 코드의 가시성을 보호합니다.

다음 단계