[Terraform] 3. Resource Group 생성

Notepad96

·

2022. 9. 17. 21:43

300x250

 

 

 

 

1. 요약

이전 글에서는 Terraform 설치 후 환경 변수를 등록하는 방법과 코드를 작성하는데 도움이 되는 IDE인 VS Code 설치하여 필요한 Plug-In을 설치하는 과정까지 알아보았습니다.

 

 

 

[Terraform] 2. Terraform 환경 구성(Windows, VS Code, Azure)

이번 글에서는 Terraform을 사용하여 리소스를 생성할 수 있도록 Terraform 설치 및 환경을 구성하는 과정을 정리한다. 아래와 같은 환경 정보로 구성할 예정이다. - OS : Windows Server 2016 - IDE : VS Code (..

notepad96.tistory.com

 

 

이번 글에서는 실제로 Terraform 코드를 작성하여 실행함으로써 리소스가 배포되는 지를 확인하기 위하여 리소스 그룹에 관한 코드를 작성 후 명령어를 실행하여 실제로 배포하는 방법에 관하여 알아볼 것입니다.

 

 

단, 이 과정을 수행하기 전 우선적으로 Azure 해당 구독에 대하여 충분한 권한을 보유하고 있는지 증명이 필요합니다.

 

 

이를 증명하기 위해서 사용하는 것이 서비스 주체(Service Principal)로서 우선 Portal에 접속하여 서비스 주체를 생성해준 후 이를 사용하여 리소스 그룹을 배포할 것입니다.

 

 

 

 

 

2. 서비스 주체(Service Principal) 설정

2-1. Portal 접속 및 Bash Shell 실행

 

https://portal.azure.com/#home

 

Azure Portal

 

 

 

 

 

2-2. Service Principal 생성 명령어 실행

 

az ad sp create-for-rbac --name <service_principal_name> --role Contributor --scopes /subscriptions/<subscription_id>

<service_principal_name>: 서비스 주체 이름

<subscription_id>: 구독 ID 값

 

이 두 가지 값을 각각 알맞게 기입한 후 명령어를 실행하면 되며

 

예시

 

 

명령어를 실행하여 정상적으로 실행되었다면 아래와 같이 생성되었다는 내용과 같이 appId, displayName, password, tenant 값들이 나타나게 됩니다.

 

 

결과

 

여기서 appId와 password는 생성한 Service Principal의 ID와 Password로 tenant 값과 함께 뒤에 자격 증명 설정 시 필요한 값이므로 복사하여 따로 기록해두도록 합니다.

 

 

 

 

2-3. Service Principal 자격 증명 지정

서비스 주체(Service Pricipal)를 생성해주었기 때문에 이제 이를 사용하여 자격을 증명하여 리소스 생성이 가능합니다.

 

자격을 증명하기 위해서는 아래 코드에서 보이듯이 subscription_id, tenant_id, client_id, client_secret 총 4개의 값 설정이 필요합니다.

 

provider "azurerm" {
  features {}

  subscription_id   = "<azure_subscription_id>"
  tenant_id         = "<azure_subscription_tenant_id>"
  client_id         = "<service_principal_appid>"
  client_secret     = "<service_principal_password>"
}

 

단, 이 같은 방법은 간단한 테스트를 진행하는 것이 아니라면 권장되지 않습니다.

 

이처럼 하드 코딩을 하게 되면 ID, Password가 그대로 코드에 노출되게 되므로, 간단한 테스트를 진행하는 것이 아니라면 환경 변수로 등록하거나 하는 방법으로 값들을 저장하여 사용하는 것을 권장합니다.

 

그러나 지금은 간단한 테스트를 진행할 것이므로 이 방법을 사용하도록 하며, 아래는 PowerShell을 사용하여 

환경 변수로 등록하고 확인하는 코드입니다.

 

 

- PowerShell에서 등록 방법

$env:ARM_CLIENT_ID="<service_principal_app_id>"
$env:ARM_SUBSCRIPTION_ID="<azure_subscription_id>"
$env:ARM_TENANT_ID="<azure_subscription_tenant_id>"
$env:ARM_CLIENT_SECRET="<service_principal_password>"

gci env:ARM_*

 

 

 

 

3. Resource 그룹 생성

3-1. Code 작성

코드를 작성하기 위해서는 우선 main.tf라는 파일을 생성해 줍니다.

 

다음으로 코드를 입력해 주며 아래 코드는 Resource Group을 생성하기 위한 간단한 코드입니다.

 

provider "azurerm" {
  features {}

  subscription_id   = "<azure_subscription_id>"
  tenant_id         = "<azure_subscription_tenant_id>"
  client_id         = "<service_principal_appid>"
  client_secret     = "<service_principal_password>"
}

resource "azurerm_resource_group" "rg" {
  location = "koreacentral"
  name     = "terraform-test-rg"
}

 

resource "azurerm_resource_group" 부분이 Azure의 Resource Group을 정의하는 부분으로 안에 속성 값들을 보면 koreacentral 위치하며, terraform-test-rg 이름을 갖는 Resource Group이 정의되어 있습니다.

 

 

 

 

 

3-2.  Terraform 명령어 실행

 

우선 VS Code 서 터미널 > Powershell을 켜 줍니다.

 

 

다음으로 아래 명령어들을 실행해 줍니다.

 

terraform init
terraform plan
terraform apply

 

 

정상적으로 실행되었다면 아래와 같이 생성되었다는 확인 메시지가 나타나며 Portal에서 확인을 해보면 정상적으로 Resource Group이 생성된 것을 확인할 수 있습니다.

 

결과

 

 

300x250