Terraform Multiple ProviderでAzureサブスクリプションを使い分ける
Terraformを使ったAzureリソースのデプロイをサブスクリプションを指定してできないかなと調べていたら、Multiple Providerを利用すると複数サブスクリプションを扱える事が分かりました。
今回はMultiple Providerの設定を使い、2つのAzureサブスクリプションにリソースグループを作成してみました。公式サイトの情報を参照しながら設定を試してみました。
Provider Configuration
Configuring Azure CLI authentication in Terraform
The resource provider Meta-Argument
Terraform初心者が色々やってみた内容を公開しています。過去のTerraform関連の記事はこちらに記載しております。
Terraform Multiple Providerとは
Multiple Providerとは同じプロバイダーに対して複数の構成を定義する事を言います。
リソースやモジュール別に使用する構成を指定する事が出来ます。
providerとは
provider はTerraformがリソースを作成および管理するために使用するプラグインです。
provider blockを使って設定します。
Azureのproviderを指定する事でAzureのリソースを扱う事が出来ます。
provider記述例(Azureの場合) | |
|
Multiple Providerとは
aliasを指定する事で1つのTerraform構成で複数のproviderを設定できる機能になります。
Multiple Provider設定して複数のAzureサブスクリプションにデプロイ
Multiple Provider設定を使って2つのサブスクリプションにリソースグループをデプロイしてみます。
Multiple Providerを使ってAzureサブスクリプションを指定
provider設定で使用するAzureサブスクリプションを指定する事が出来ます。
provider blockにaliasを作成します。aliasに別サブスクリプションを指定する事で複数のサブスクリプションを扱う事が出来るようになります。
Azureで複数サブスクリプションを指定する場合のprovider記述例 | |
|
※今回はサブスクリプションを指定していますが、リージョンやリソース単位と言った設定も可能だそうです。
2つのサブスクリプションにそれぞれリソースグループをデプロイ
2つのサブスクリプションにAzureリソースグループをデプロイしてみます。
サブのproviderにデプロイする為には、resource block内でproviderの指定を行います。
-
- デプロイ内容
- メインのサブスクリプションにrg-multiple-mainというリソースグループをデプロイ
- サブのサブスクリプションにrg-multiple-subというリソースグループをデプロイ
- デプロイ内容
-
- 設定内容
- provider blockでメイン、サブそれぞれのsubscription_idを指定
- aliasにSub-idを指定したprovider blockを追加
- サブにデプロイするresource にprovider = azurerm.Sub-idを追加
- 設定内容
2つのサブスクリプションにリソースグループをデプロイ | |
|
Terraform Showを使ってデプロイしたリソースグループを確認
デプロイ後にTerraform Showコマンドを使ってデプロイされたAzureリソースグループを確認してみます。
Terraform Showコマンドはデプロイ状態(tfstate)を確認するコマンドになります。Terraform Showコマンドの詳細はこちら。
Terraform Showの確認結果 | |
|
2つのサブスクリプションにそれぞれリソースグループがデプロイされている事が分かりました。
最後に
provider blockにサブスクリプションIDを指定するだけでとても簡単に複数のAzureサブスクリプションを使い分ける事が出来ました。providerの設定を使うともっと色々な事が出来るようなので今後も色々試してみたい所です。
Terraform関連の記事はこちらになります。色々試していますので併せて見て頂けると大変有難いです。