이전에 Azure 포털을 통해 Azure VM을 생성한 적이 있습니까? 그렇다면 그 과정을 위해 몇 번의 클릭이 필요했나요? 정확히 동일한 입력 값을 제공하여 특정 표준을 충족시키기 위해 반복적으로 수행할 수 있나요? 아마도 그렇지 않을 것입니다. 이 프로세스를 자동화해야 합니다. Terraform을 사용하여 Azure VM을 생성하세요!
Terraform은 Hashicorp에서 개발한 유틸리티로, 온프레미스나 클라우드에서 간단한 또는 복잡한 인프라를 생성합니다. Terraform은 구성 파일을 읽고 상태(state)를 생성한 다음, 인프라가 해당 상태를 만들고 유지하도록 보장하는 단일 이진 파일입니다.
이 문서에서는 Azure VM을 생성하여 Terraform을 시작하는 방법을 알아볼 것입니다. 이 튜토리얼은 훌륭한 Terraform Azure 예제가 될 것입니다.
사전 요구 사항
이 튜토리얼을 따라하기 위해 다음 사항이 준비되어 있는지 확인하세요:
- Azure CLI가 이미 Azure 구독에 인증되어 있어야 합니다.
이 튜토리얼에서는 macOS에서 PowerShell Core를 실행하는 것을 기준으로 하지만, 동일한 프로세스는 Windows 10에서 PowerShell Core, Windows PowerShell 또는 Windows 명령 프롬프트를 사용하여 수행할 수 있습니다.
Terraform 설치하기
시작하려면 먼저 Terraform을 다운로드해야합니다. 선호에 따라 여러 가지 방법이 있습니다. 이 튜토리얼은 macOS를 사용하므로 brew install terraform
을 실행하여 HomeBrew를 사용할 수 있습니다. 또는 Terraform 다운로드 페이지로 바로 이동하거나, Windows를 사용하는 경우 Chocolatey를 사용할 수도 있습니다.
Azure Cloud Shell에는 Terraform이 이미 설치되어 있는 것을 알고 계셨나요?
Terraform을 다운로드한 후 해당 폴더에 복사하고 terraform
를 실행하십시오. 아래에 표시된대로 사용 방법이 표시됩니다. 이를 보면 진행할 준비가 된 것입니다.

Azure에 인증하기
Terraform은 온프레미스 및 클라우드 공급업체와 통신하기 위해 제공자를 사용합니다. 이 경우 Terraform Azure 제공자를 구성해야합니다. Azure CLI가 설치되어 있고 Azure에 이미 인증되었다고 가정하면 먼저 서비스 주체를 생성해야합니다. Terraform은 서비스 주체를 사용하여 인증하고 Azure 구독에 액세스합니다.
서비스 주체 생성
콘솔에서 Azure CLI를 사용하여 서비스 주체를 생성하십시오. 다음을 수행하면 됩니다:
먼저 아래의 az account list
명령을 사용하여 구독 ID를 찾으세요.
구독 ID를 얻은 후, Contributor 역할을 사용하여 구독에 대한 서비스 주체를 만드세요.
Azure CLI는 아래와 같이 Azure에 연결하여 비밀번호가 있는 Azure AD 애플리케이션을 만듭니다. 위에서 보여진 출력을 $sp
변수에 할당하므로, 나중에 사용하기 위해 appId
와 password
가 변수에 저장됩니다.

환경 변수 설정
Terraform은 Azure에 성공적으로 연결하기 위해 네 가지 다른 구성 항목을 알아야 합니다.
- Azure 구독 ID
- 서비스 주체의 Azure AD 애플리케이션 ID
- 서비스 주체 비밀번호
- Azure AD 테넌트
Terraform에이 정보를 제공하는 한 가지 방법은 환경 변수를 사용하는 것입니다. 이 튜토리얼은 PowerShell 콘솔에서 작동하므로 $env:
를 사용하여 이러한 환경 변수를 설정할 수 있습니다. 아래에서는 Terraform이 Azure에 연결하려고 할 때 검색할 각 환경 변수를 볼 수 있습니다.
az ad sp create-for-rbac
의 출력이 이전에 $sp
변수에 저장되었으므로, 속성을 복사하여 붙여넣는 대신에 간단히 속성을 참조할 수 있습니다.
환경 변수를 정의한 후에는 Terraform이 Azure에 연결할 준비가 되었습니다!
구성 파일 생성하기
모든 Terraform 구성은 일반적으로 모듈 이름으로 한 폴더에 생성됩니다. 이 튜토리얼에서는 모듈을 생성하지 않지만 동일한 방식을 따를 것입니다.
PowerShell 콘솔에서 원하는 위치에 TerraformTesting이라는 폴더를 생성한 다음 해당 디렉토리로 이동하십시오.
그런 다음 main.tf 구성 파일을 생성하십시오. 이곳에 Azure VM을 Terraform으로 빌드하는 구성이 저장됩니다. 이 구성 파일은 대부분 “main” 구성 파일이라고 불리며, 구성이 관리하는 모든 인프라에 대한 공급자 및 리소스 선언을 포함합니다.
구문 (HCL)에 대해 자세히 알아보려면 Michael Levan과 함께한 No BS Azure and DevOps eBook의 훌륭한 장을 참조하십시오.
main.tf 파일을 Terraformtesting 디렉토리 내에 아래와 같이 생성하십시오.
Terraform을 초기화합니다
Terraform은 리소스를 생성하기 전에 사용할 프로바이더의 종류를 알아야 합니다. 작업 중인 폴더와 동일한 폴더에 이 프로바이더를 다운로드하기 때문에 미리 알아야 합니다.
주요 구성 파일에서 정의된 azurerm
리소스 프로바이더를 다음과 같이 실행하여 다운로드합니다: terraform init
. 이후에 아래와 유사한 출력을 볼 수 있어야 합니다.

구성 유효성 검사
당신이 만든 구성은 완벽하지 않을 수도 있습니다. 믿기 어려울 수도 있지만, 구성에 구문 오류가 있는지를 확인하기 위해 Terraform은 구성을 유효성 검사해야 합니다. 이를 위해 terraform plan
명령을 실행하십시오. 이 명령은 디렉토리의 구성 파일을 읽고 오류를 보고합니다.
인프라를 실제로 프로비저닝하기 전에
terraform plan
이 나타내는 모든 오류를 수정하세요!
Azure VM을 Terraform으로 빌드하세요.
마지막으로, Azure VM을 실제로 빌드하기 위해 terraform apply
를 실행하세요. terraform apply
를 실행하면 디렉토리에 있는 구성 파일을 읽고 확인을 요청합니다. “yes”를 입력한 후, Azure에 연결하여 VM 및 모든 관련 리소스를 구축하기 시작합니다.

아래에 밝고 반짝이는 녹색 Apply complete!
텍스트가 표시되면, Terraform이 리소스를 성공적으로 구축한 것입니다!
정리하기
이것은 디모이이고 이 VM을 유지할 계획이 아닌 것 같으므로, 수행한 모든 작업을 제거하세요.
VM에 대한 Terraform의 인증을 위해 서비스 주체를 생성했습니다. 아래의 az ad sp delete
명령으로 해당 서비스 주체를 제거할 수 있습니다.
그다음, 구성 파일에서 만든 Azure VM 및 다른 모든 리소스를 terraform destroy
를 사용하여 제거하세요. terraform destroy
를 실행할 경우 어떤 일이 발생하는지 구성을 유효성 검사하고 테스트하길 원한다면, terraform plan -destroy
를 실행할 수도 있습니다.
결론
테라폼은 다양한 분야에서 인프라를 구축하는 데에 훌륭하고무료한 도구입니다. HCL 구문을 배우는 것은 테라폼의 가장 어려운 부분이지만, 솔직히 말해서 HCL은 직관적인 언어입니다. 예를 들어 테라폼이나 ARM 템플릿과 같은 도구를 사용하려고 생각하고 있다면, 테라폼을 배우세요!
테라폼은 현재 인기 있는 업계 도구이며, 커뮤니티 지원이 훌륭하며 많은 사람들이 도움을 줄 수 있습니다!