Azure에서 Terraform을 사용할 때 일반적인 문제 해결
이 문서에서는 Azure에서 Terraform을 사용할 때 발생하는 일반적인 문제 및 가능한 솔루션을 나열합니다.
Terraform과 관련된 문제가 발생하는 경우 HashiCorp의 커뮤니티 지원 채널 중 하나를 사용합니다.
HashiCorp Terraform 특정 지원 채널
- 질문, 사용 사례 및 유용한 패턴: HashiCorp 커뮤니티 포털의 Terraform 섹션
- 공급자 관련 질문: HashiCorp 커뮤니티 포털의 Terraform 공급자 섹션
공급자 등록 상태를 나열할 수 없음
오류 메시지:
오류: 공급자 등록 상태 나열할 수 없습니다. 이는 자격 증명이 잘못되었거나 서비스 주체가 Resource Manager API, Azure 오류: 리소스를 사용할 수 있는 권한이 없기 때문일 수 있습니다. ProvidersClient#List: 요청에 응답하지 못했습니다. StatusCode=403 -- 원래 오류: autorest/azure: 서비스가 오류를 반환했습니다. Status=403 Code="AuthorizationFailed" Message="개체 ID가 '000000000-00000-000000000000000'인 클라이언트 '000000000-00000-00000-00000 -0000000000000'에는 '/subscriptions/00000000-0000-0000-0000-0000-0000000000000' 범위에 대해 'Microsoft.Resources/subscriptions/providers/read' 작업을 수행할 수 있는 권한이 없거나 범위가 잘못되었습니다. 액세스 권한이 최근에 부여된 경우 자격 증명을 새로 고치세요.
배경: Cloud Shell에서 Terraform 명령을 실행하고 특정 Terraform/Azure 환경 변수를 정의한 경우 충돌이 표시되는 경우가 있습니다. 환경 변수 및 해당 변수가 나타내는 Azure 값은 다음 표에 나와 있습니다.
환경 변수 | Azure 값 |
---|---|
ARM_SUBSCRIPTION_ID | Azure 구독 ID |
ARM_TENANT_ID | Microsoft 계정 테넌트 ID |
ARM_CLIENT_ID | Azure 서비스 주체 앱 ID |
ARM_CLIENT_SECRET | Azure 서비스 주체 암호 |
원인: 이 문서를 작성할 당시 Cloud Shell에서 실행되는 Terraform 스크립트는 현재 Azure 구독의 값을 사용하여 ARM_SUBSCRIPTION_ID
및 ARM_TENANT_ID
환경 변수를 덮어씁니다. 결과적으로 환경 변수에서 참조하는 서비스 주체에게 현재 Azure 구독에 대한 권한이 없으면 모든 Terraform 작업이 실패합니다.
상태 잠금을 획득하는 동안 오류가 발생했습니다.
오류 메시지:
오류: 상태 잠금을 획득하는 동안 오류가 발생했습니다. 오류 메시지: 2개 오류가 발생했습니다.
* 상태 Blob이 이미 잠겨 있습니다.
* Blob 메타데이터 "terraformlockid"가 비어 있음
Terraform은 여러 사용자가 동시에 작성하지 않도록 상태를 보호하기 위해 상태 잠금을 획득합니다. 위의 문제를 해결하고 다시 시도하세요. 대부분의 명령에서는 "-lock=false" 플래그를 사용하여 잠금을 사용하지 않도록 설정할 수 있지만 권장되지는 않습니다.
배경: Terraform 상태 파일에 대해 Terraform 명령을 실행하고 이 오류가 표시되는 유일한 메시지인 경우 다음 원인이 적용될 수 있습니다. 로컬 및 원격 상태 파일에 적용됩니다.
원인: 이 오류에는 두 가지 잠재적인 원인이 있습니다. 첫 번째는 Terraform 명령이 이미 상태 파일에 대해 실행 중이고 파일에 대한 잠금을 강제로 실행했기 때문에 아무 것도 중단되지 않는 것입니다. 두 번째 잠재적인 원인은 명령이 실행 중일 때 상태 파일과 CLI 간에 연결 중단이 발생했기 때문에 발생합니다. 이 중단은 원격 상태 파일을 사용할 때 가장 일반적으로 발생합니다.
해결 방법: 먼저 상태 파일에 대한 명령을 아직 실행하지 않았는지 확인합니다. 로컬 상태 파일로 작업하는 경우 검사 명령을 실행하는 터미널이 있는지 확인합니다. 또는 배포 파이프라인을 검사 실행 중인 항목이 상태 파일을 사용하고 있는지 확인합니다. 이렇게 해도 문제가 해결되지 않으면 두 번째 원인으로 인해 오류가 트리거된 것일 수 있습니다. Azure Storage 계정 컨테이너에 저장된 원격 상태 파일의 경우 파일을 찾고 임대 중단 단추를 사용할 수 있습니다.
다른 백 엔드를 사용하여 상태 파일을 저장하는 경우 권장 사항은 HashiCorp 설명서를 참조하세요.
VPN 오류
VPN 오류 해결에 대한 자세한 내용은 하이브리드 VPN 연결 문제 해결 문서를 참조하세요.