빠른 시작: Terraform을 설치하고 구성하여 Azure 리소스 프로비저닝Quickstart: Install and configure Terraform to provision Azure resources

Terraform은 간단한 템플릿 언어를 사용하여 클라우드 인프라를 정의, 미리 보기 및 배포하는 쉬운 방법을 제공합니다.Terraform provides an easy way to define, preview, and deploy cloud infrastructure by using a simple templating language. 이 문서에서는 Terraform을 사용하여 Azure의 리소스를 프로비전하는 데 필요한 단계를 설명합니다.This article describes the necessary steps to use Terraform to provision resources in Azure.

Azure에서 Terraform을 사용하는 방법에 대한 자세한 내용은 Terraform 허브를 참조하세요.To learn more about how to use Terraform with Azure, visit the Terraform Hub.

참고

Terraform 관련 지원은 다음과 같은 해당 커뮤니티 채널 중 하나를 사용하여 Terraform에 직접 문의하세요.For Terraform specific support, please reach out to Terraform directly using one of their community channels:

  • 커뮤니티 포털의 Terraform 섹션에는 질문, 사용 사례 및 유용한 패턴이 포함되어 있습니다.The Terraform section of the community portal contains questions, use cases, and useful patterns.

  • 공급자 관련 질문은 커뮤니티 포털의 Terraform 공급자 섹션을 참조하세요.For provider-related questions please visit the Terraform Providers section of the community portal.

Azure Cloud Shell 사용Use Azure Cloud Shell

Azure는 브라우저를 통해 사용할 수 있는 대화형 셸 환경인 Azure Cloud Shell을 호스트합니다.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell에서 Bash 또는 PowerShell을 사용하여 Azure 서비스 작업을 수행할 수 있습니다.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. 로컬 환경에 아무 것도 설치할 필요 없이 Azure Cloud Shell의 미리 설치된 명령을 사용하여 이 문서의 코드를 실행할 수 있습니다.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell을 시작하려면 다음을 수행합니다.To start Azure Cloud Shell:

옵션Option 예제/링크Example/Link
코드 블록의 오른쪽 위 모서리에서 사용을 선택합니다.Select Try It in the upper-right corner of a code block. 사용해보기를 선택하면 코드가 Cloud Shell에 자동으로 복사되지 않습니다.Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell에 대한 사용 예제
https://shell.azure.com으로 이동하거나 Cloud Shell 시작 버튼을 선택하여 브라우저에서 Cloud Shell을 엽니다.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 새 창에서 Cloud Shell 시작Launch Cloud Shell in a new window
Azure Portal의 오른쪽 위에 있는 메뉴 모음에서 Cloud Shell 단추를 선택합니다.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Azure Portal의 Cloud Shell 단추

이 문서의 코드를 Azure Cloud Shell에서 실행하려면 다음을 수행합니다.To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell을 시작합니다.Start Cloud Shell.

  2. 코드 블록의 복사 단추를 선택하여 코드를 복사합니다.Select the Copy button on a code block to copy the code.

  3. Windows 및 Linux에서 Ctrl+Shift+V를 선택하거나 macOS에서 Cmd+Shift+V를 선택하여 코드를 Cloud Shell 세션에 붙여넣습니다.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter를 선택하여 코드를 실행합니다.Select Enter to run the code.

Terraform은 기본적으로 Cloud Shell에 설치됩니다.Terraform is installed by default in the Cloud Shell. Terraform을 로컬로 설치하려는 경우 다음 단계를 완료하고, 그렇지 않으면 Azure에 대한 Terraform 액세스 설정을 계속 진행합니다.If you choose to install Terraform locally, complete the next step, otherwise continue to Set up Terraform access to Azure.

Terraform 설치Install Terraform

Terraform을 설치하려면 운영 체제에 적합한 패키지를 별도의 설치 디렉터리에 다운로드합니다.To install Terraform, download the appropriate package for your operating system into a separate install directory. 다운로드에는 전역 경로를 정의해야 하는 단일 실행 파일이 포함됩니다.The download contains a single executable file, for which you should also define a global path. Linux 및 Mac에서 경로를 설정하는 방법에 대한 지침은 이 웹 페이지로 이동합니다.For instructions on how to set the path on Linux and Mac, go to this webpage. Windows에서 경로를 설정하는 방법에 대한 지침은 이 웹 페이지로 이동합니다.For instructions on how to set the path on Windows, go to this webpage.

terraform 명령을 사용하여 경로 구성을 확인합니다.Verify your path configuration with the terraform command. 다음 예제 출력처럼 사용 가능한 Terraform 옵션 목록이 표시됩니다.A list of available Terraform options is shown, as in the following example output:

azureuser@Azure:~$ terraform
Usage: terraform [--version] [--help] <command> [args]

Azure에 대한 Terraform 액세스 설정Set up Terraform access to Azure

Terraform에서 Azure로 리소스를 프로비전할 수 있도록 Azure AD 서비스 사용자를 만듭니다.To enable Terraform to provision resources into Azure, create an Azure AD service principal. 서비스 사용자는 Azure 구독에서 리소스를 프로비전하는 권한을 Terraform 스크립트에 부여합니다.The service principal grants your Terraform scripts to provision resources in your Azure subscription.

Azure 구독이 여러 개 있는 경우 먼저 az account list 명령으로 계정을 쿼리하여 구독 ID 및 테넌트 ID 값을 가져옵니다.If you have multiple Azure subscriptions, first query your account with az account list to get a list of subscription ID and tenant ID values:

az account list --query "[].{name:name, subscriptionId:id, tenantId:tenantId}"

선택한 구독을 사용하려면 az account set 명령을 사용하여 이 세션에 대한 구독을 설정합니다.To use a selected subscription, set the subscription for this session with az account set. 사용하려는 구독에서 반환된 id 필드 값을 보유하도록 SUBSCRIPTION_ID 환경 변수를 설정합니다.Set the SUBSCRIPTION_ID environment variable to hold the value of the returned id field from the subscription you want to use:

az account set --subscription="${SUBSCRIPTION_ID}"

이제 Terraform에 사용할 서비스 사용자를 만들 수 있습니다.Now you can create a service principal for use with Terraform. 다음과 같이 az ad sp create-for-rbac를 사용하고, 범위를 구독으로 설정합니다.Use az ad sp create-for-rbac, and set the scope to your subscription as follows:

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"

appId, password, sp_nametenant가 반환됩니다.Your appId, password, sp_name, and tenant are returned. appIdpassword를 기록해 둡니다.Make a note of the appId and password.

Terraform 환경 변수 구성Configure Terraform environment variables

Azure AD 서비스 사용자를 사용하도록 Terraform을 구성하려면 다음 환경 변수를 설정합니다. 이 환경 변수는 Azure Terraform 모듈에 사용됩니다.To configure Terraform to use your Azure AD service principal, set the following environment variables, which are then used by the Azure Terraform modules. Azure 공용이 아닌 Azure 클라우드에서 작업하는 경우 환경을 설정할 수도 있습니다.You can also set the environment if working with an Azure cloud other than Azure public.

  • ARM_SUBSCRIPTION_ID
  • ARM_CLIENT_ID
  • ARM_CLIENT_SECRET
  • ARM_TENANT_ID
  • ARM_ENVIRONMENT

다음 샘플 셸 스크립트를 사용하여 해당 변수를 설정할 수 있습니다.You can use the following sample shell script to set those variables:

#!/bin/sh
echo "Setting environment variables for Terraform"
export ARM_SUBSCRIPTION_ID=your_subscription_id
export ARM_CLIENT_ID=your_appId
export ARM_CLIENT_SECRET=your_password
export ARM_TENANT_ID=your_tenant_id

# Not needed for public, required for usgovernment, german, china
export ARM_ENVIRONMENT=public

샘플 스크립트 실행Run a sample script

빈 디렉터리에 test.tf 파일을 만들고 다음 스크립트에 붙여넣습니다.Create a file test.tf in an empty directory and paste in the following script.

provider "azurerm" {
  # The "feature" block is required for AzureRM provider 2.x. 
  # If you are using version 1.x, the "features" block is not allowed.
  version = "~>2.0"
  features {}
}
resource "azurerm_resource_group" "rg" {
        name = "testResourceGroup"
        location = "westus"
}

파일을 저장하고 Terraform 배포를 초기화합니다.Save the file and then initialize the Terraform deployment. 이 단계에서는 Azure 리소스 그룹을 만드는 데 필요한 Azure 모듈을 다운로드합니다.This step downloads the Azure modules required to create an Azure resource group.

terraform init

다음 예제와 유사하게 출력됩니다.The output is similar to the following example:

* provider.azurerm: version = "~> 0.3"

Terraform has been successfully initialized!

terraform plan 명령을 사용하면 Terraform 스크립트에서 완료할 작업을 미리 볼 수 있습니다.You can preview the actions to be completed by the Terraform script with terraform plan. 리소스 그룹을 만들 준비가 완료되면 다음과 같이 Terraform 계획을 적용합니다.When ready to create the resource group, apply your Terraform plan as follows:

terraform apply

다음 예제와 유사하게 출력됩니다.The output is similar to the following example:

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  + azurerm_resource_group.rg
      id:       <computed>
      location: "westus"
      name:     "testResourceGroup"
      tags.%:   <computed>

azurerm_resource_group.rg: Creating...
  location: "" => "westus"
  name:     "" => "testResourceGroup"
  tags.%:   "" => "<computed>"
azurerm_resource_group.rg: Creation complete after 1s

다음 단계Next steps

이 문서에서는 Terraform을 설치하고/Cloud Shell을 사용하여 Azure 자격 증명을 구성하고 Azure 구독에서 리소스 만들기를 시작했습니다.In this article, you installed Terraform or used the Cloud Shell to configure Azure credentials and start creating resources in your Azure subscription. Azure에서 보다 완전한 Terraform 배포를 만들려면 다음 문서를 참조하세요.To create a more complete Terraform deployment in Azure, see the following article: