12
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TerraformでAzure構築・運用自動化の入門

Last updated at Posted at 2019-08-29

 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に接続。
キャプチャ2.PNG

[bash]か[PowerShell]か選ぶ画面が表示されたら[bash]を選ぶ。すると以下の画面が表示される。

キャプチャ3.PNG

ここで以下コマンドで値を取得する。

# サブスクリプション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.

実際にコンソール上で確認するとリソースグループが作成されています。
キャプチャ.PNG

以上、簡単にTerafformでAzureリソースを作成してみましたが、リソース定義についてこちらも参考になります。
・TerraformによってAzureに完全な Linux 仮想マシンのインフラストラクチャを作成する

参考

・VM などのインフラストラクチャを Azure にプロビジョニングするための Terraform のインストールと構成

12
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?