TerraformでAzure Resource Managerの操作で困った時の解決方法

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

TerraformからAzureを操作するのはとても簡単です。
しかし、残念ながら、HashiCorpの公式ドキュメントではあまり分かり易く記述されていません。
Azureの公式ドキュメントは分かり易く詳細に記述されていますが、TerraformはMicrosoftのツールではないため説明がありません。

そこで、そんな問題を解決する方法をご紹介します。

Environment

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

TerraformでAzure Resource Managerの操作で困った時の解決方法

作成したい仮想マシンの内容をAzure Portal上で定義していきます。
そうすると、最後に検証が終わると、以下の画面が表示されます。

仮想マシン作成

ここで、[OK]の隣にある[Download template and parameters]をクリックすると、ここまで設定した内容のAzure Resource Manager向けファイルがダウンロードできます。

このAzure Resource Manager向けファイルを読み解けば、Terraformでどのようにtfファイルを記述すれば良いか分かるわけです。

  1. Terraformは内部的にAzure Resource Managerのコマンドを実行している
  2. つまり、tfファイルの形はAzure Resource Manager向けファイルと似た形をしている
  3. 作成したい仮想マシンのAzure Resource Manager向けファイルとtfファイルの形は似ているはず

という思考からHashiCorpの公式ドキュメントのままではできなかった以下ができました。

これに気づくまで、HashiCorpの公式ドキュメントの

を両方書いているのに、どうしてPublic IPアドレスが仮想マシンに紐付かないのだろう?と詰まっていました。