Terraform으로 Azure 구축 및 운영 자동화 시작

terraform을 사용하면 클라우드상의 리소스를 정의 파일의 상태가 되도록 구축해 줍니다.
이번에는 terraform을 사용하여 Azure의 환경 구축·운용 자동화에 입문해 보겠습니다.

이 기사에서는 다음을 게시합니다.
1, CentOS7에 terraform 실행 환경 설치
2,Terraform에서 Azure에 액세스하기위한 값 가져 오기
3, 실제로 Azure 자원 그룹을 terraform으로 작성

전제



Azure 계정이 만들어졌습니다.

1, CentOS7에 terraform 실행 환경 설치



※root 유저로의 작업으로 합니다.
# terraformダウンロード
wget https://releases.hashicorp.com/terraform/0.11.13/terraform_0.11.13_linux_amd64.zip

# terraform配置
unzip ./terraform_0.11.13_linux_amd64.zip -d /usr/local/bin/

# 確認
terraform -v

# terraform用ディレクトリ作成
mkdir terraform
cd terraform

2,Terraform에서 Azure에 액세스하기위한 값 가져 오기



Azure 콘솔 상단의 다음 표시를 클릭하여 Azure Cloud Shell에 연결합니다.


[bash] 또는 [PowerShell]을 선택하는 화면이 나타나면 [bash]를 선택합니다. 그러면 다음 화면이 표시됩니다.



여기서, 이하의 커맨드로 값을 취득한다.
# サブスクリプションID、テナントIDを表示
araki@Azure:~$ az account show --query "{subscriptionId:id, tenantId:tenantId}"
{
  "subscriptionId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenantId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}


# アカウントにSUBSCRIPTIONが複数ある場合以下でID設定をする。
 一つしかない場合はやる必要がない。むしろやるとエラーになる。
araki@Azure:~$ SUBSCRIPTION_ID="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
araki@Azure:~$ az account set --subscription="SUBSCRIPTION_ID"

# Terraformで使用するサービス プリンシパルを作成
araki@Azure:~$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"
Creating a role assignment under the scope of "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  Retrying role assignment creation: 1/36
{
  "appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "displayName": "azure-cli-YYYY-MM-DD-hh-mm-ss",
  "name": "http://azure-cli-YYYY-MM-DD-hh-mm-ss",
  "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

3, 실제로 Azure 자원 그룹을 terraform으로 작성



변수 설정



CentOS7로 되돌아 가서 취득한 값을 변수로 설정합니다.
export ARM_SUBSCRIPTION_ID=サブスクリプションID
export ARM_CLIENT_ID=アップId
export ARM_CLIENT_SECRET=パスワード
export ARM_TENANT_ID=テナントID

tf 파일 만들기


vi test.tf
※以下記載。

provider "azurerm" {
}
resource "azurerm_resource_group" "rg" {
        name = "testResourceGroup"
        location = "westus"
}

위는 testResourceGroup이라는 자원 그룹을 westus에 작성하는 정의를 가지고 있습니다.

Terraform 배포 초기화


terraform init
※Terraform has been successfully initialized! と表示されたら成功。

드라이런


terraform plan
※最下部に以下のように表示される。

Terraform will perform the following actions:

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


Plan: 1 to add, 0 to change, 0 to destroy.

「+」마크가 자원 정의에 의해 작성되는 항목입니다. 마지막 행은 추가, 변경, 삭제 항목이 몇 개 있는지를 나타냅니다.

자원 정의 적용


terraform apply

※途中、本当に適用するか確認されるのでyesと入力する。
Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

※最後に以下表示される。
Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

실제로 콘솔에서 확인하면 리소스 그룹이 만들어집니다.


이상, 간단하게 Terafform으로 Azure 리소스를 작성해 보았습니다만, 리소스 정의에 대해서 이쪽도 참고가 됩니다.
· Terraform으로 Azure에 완벽한 Linux 가상 머신 인프라 만들기

참고



· VM과 같은 인프라를 Azure에 프로비저닝하기위한 Terraform 설치 및 구성

좋은 웹페이지 즐겨찾기