TerraformでAzureのインフラを構築する方法

このブログをご覧のみなさん、こんにちは。

以下は

をAzureで実践するものになります。

HashiCorpの公式サイトにあるTerraformのProvider: Azure Resource Manager – Terraform by HashiCorpに書いてあります。

Environment

  • Mac Book Pro
    • OS X Yosemite 10.10.5
  • Terraform 0.7.1

Creating Credentials

最初にCreating Credentialsを行います。
これを実行すると、client_id, client_secret, tenant_idが払い出されます。
英語で書かれていますが、簡単に書くと

クラシックポータルでの作業

  • アクティブディレクトリ をクリックし、使用するディレクトリを選択する
  • アプリケーション をクリックする
  • 追加 をクリック後、 組織で開発中のアプリケーションを追加 を選択する
  • Terraform のような分かり易い名前を入力し、 WEB アプリケーションや WEB APIを選択後、矢印アイコンをクリックする
  • サインオン URLとアプリケーションの URLの2つに自分のサイトやGitHub pageのような有効で未使用のURLを入力後、矢印アイコンをクリックする
  • アプリケーションをクリック後、 構成 をクリックすると、ページの真ん中らへんにクライアント ID(client_id)の値が表示されている
  • その下の キー 節で、時間を選択し、 保存 をクリックすると、クライアントシークレット(client_secret)が表示されるが、1度しか表示されないので注意すること
  • エンドポインtpの表示 をクリックすると表示されるポップアップの OAUTH 2.0 承認エンドポイント の英語と数字の羅列されている真ん中らへんの値がtenant_idの値になる

新ポータルでの作業

  • 左のパネルにある サブスクリプション をクリックする。使いたいサブスクリプションをクリックし、 すべての設定をクリック後、 ユーザーをクリックする
  • 追加 をクリック後、Terrafromに割り当てる役割を選択する。役割の詳細はこちら参照のこと
  • ‘クラシック’ポータルで追加したアプリケーション名をユーザー名を選択する
  • OKをクリックする

TerraformでAzureのインフラを構築する

後はExample Usageに記載の通り、

# Configure the Microsoft Azure Provider
provider "azurerm" {
  subscription_id = "..."
  client_id       = "..."
  client_secret   = "..."
  tenant_id       = "..."
}

# Create a resource group
resource "azurerm_resource_group" "production" {
    name     = "production"
    location = "West US"
}

# Create a virtual network in the web_servers resource group
resource "azurerm_virtual_network" "network" {
  name                = "productionNetwork"
  address_space       = ["10.0.0.0/16"]
  location            = "West US"
  resource_group_name = "${azurerm_resource_group.production.name}"

  subnet {
    name           = "subnet1"
    address_prefix = "10.0.1.0/24"
  }

  subnet {
    name           = "subnet2"
    address_prefix = "10.0.2.0/24"
  }

  subnet {
    name           = "subnet3"
    address_prefix = "10.0.3.0/24"
  }
}

[好きな名前].tfで保存すれば、実行できます。