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

以下は

を 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] の二つに自分のサイトや GitHub Pages のような有効で未使用の URL を入力後、矢印アイコンをクリックする
  • アプリケーションをクリック後、[構成]をクリックすると、ページの真ん中らへんにクライアント ID(client_id) の値が表示されている
  • その下の[キー]節で、時間を選択し、[保存]をクリックすると、クライアントシークレット (client_secret) の値が表示されるが、一度しか表示されないので注意する
  • [エンドポインtpの表示]をクリックすると表示されるポップアップの [OAUTH 2.0 承認エンドポイント]の英語と数字の羅列されている真ん中らへんの値が tenant_id の値になる

新ポータルでの作業

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

Terraform で Azure を構築する

後は [Example Usage] に記載の通り

# Configure the Microsoft Azure Provider
provider "azurerm" {
  subscription_id = "[使用するサブスクリプション ID]"
  client_id = "[上で表示された client_id]"
  client_secret = "[上で表示された client_secret]"
  tenant_id = "[上で表示された 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 で保存すれば、実行できます。