[解決済み] Terraformのdepends_onとモジュール
質問
テラフォームの初心者ですが、モジュール構造でazureのカスタムポリシーを作成しました。
各ポリシーがカスタムモジュールを表しています。
私が作成したモジュールの1つは、新しいazureリソースが作成されると診断ログを有効にすることです。
しかし、私はそれのためのストレージアカウントが必要です。(診断設定を有効にする前に、私はどのように実装することができますか?
depend_on"または他のメソッド?
まずストレージアカウントを作成し、次に診断設定のモジュールを作成したいのですが。
その際
main.tf
(他のすべてのモジュールを呼び出す場所)またはリソース(モジュール)の内部?
助けてくれてありがとうございます! :)
この下のコードはmain.tfファイルを表しています。
//calling the create storage account name
module "createstorageaccount" {
source = "./modules/module_create_storage_account"
depends_on = [
"module_enable_diagnostics_logs"
]
}
これは、Create Storage Account モジュールを表しています。
resource "azurerm_resource_group" "management" {
name = "management-rg"
location = "West Europe"
}
resource "azurerm_storage_account" "test" {
name = "diagnostics${azurerm_resource_group.management.name}"
resource_group_name = "${azurerm_resource_group.management.name}"
location = "${azurerm_resource_group.management.location}"
account_tier = "Standard"
account_replication_type = "LRS"
tags = {
environment = "diagnostics"
}
}
depends_on = [
"module_enable_diagnostics_logs"
]
解決方法は?
ほとんどの場合、必要な依存関係は、参照の結果として自動的に発生します。あるリソースの設定が他のリソースを直接または間接的に参照している場合、Terraformは自動的にそれらの間の依存関係を推論し、明示的な
depends_on
.
これは、モジュールの変数と出力が依存関係グラフのノードでもあるため、機能します。
var.foo
という変数があり、その変数の値が依存しているものに間接的に依存していることになります。
自動的な依存関係の検出が不十分な稀な状況では、モジュール変数と出力が依存関係グラフのノードであるという事実を利用して、間接的な 明示的 のような依存関係があります。
variable "storage_account_depends_on" {
# the value doesn't matter; we're just using this variable
# to propagate dependencies.
type = any
default = []
}
resource "azurerm_storage_account" "test" {
name = "diagnostics${azurerm_resource_group.management.name}"
resource_group_name = "${azurerm_resource_group.management.name}"
location = "${azurerm_resource_group.management.location}"
account_tier = "Standard"
account_replication_type = "LRS"
tags = {
environment = "diagnostics"
}
# This resource depends on whatever the variable
# depends on, indirectly. This is the same
# as using var.storage_account_depends_on in
# an expression above, but for situations where
# we don't actually need the value.
depends_on = [var.storage_account_depends_on]
}
このモジュールを呼び出すと
storage_account_depends_on
には、 ストレージアカウントよりも先に作成されることを保証したいオブジェクトを含む任意の式を指定します。
module "diagnostic_logs" {
source = "./modules/diagnostic_logs"
}
module "storage_account" {
source = "./modules/storage_account"
storage_account_depends_on = [module.diagnostic_logs.logging]
}
そして
diagnostic_logs
モジュールの間接的な依存関係を設定することができます。
logging
を出力して、モジュール間の依存関係のリンクを完成させます。
output "logging" {
# Again, the value is not important because we're just
# using this for its dependencies.
value = {}
# Anything that refers to this output must wait until
# the actions for azurerm_monitor_diagnostic_setting.example
# to have completed first.
depends_on = [azurerm_monitor_diagnostic_setting.example]
}
リレーションシップを表現するために、実際の 値 例えば、idを含む出力があれば、その方が分かりやすい構成になるので、そちらをお勧めします。しかし、データフローとしてモデル化できないリソース間の関係があるような稀な状況では、出力や変数を使ってモジュール間の依存関係を明示的に伝播させることも可能です。
関連
-
[解決済み】Azureウェブサイトのメッセージ「このディレクトリまたはページを表示する権限がありません。どうすればいい?
-
[解決済み] Azure Kubernetes "az aks get-credentials "コマンドの実行時のエラーについて
-
[解決済み] New-AzureRmResourceGroupDeployment コマンドレットで追加のパラメータを渡す方法
-
[解決済み] コンテナにアンレディステータスがある」と表示される。Kubernetesで「[]」というエラーが発生する
-
[解決済み] Connect-AzAccount - azureのデバイス認証を回避する方法は?
-
[解決済み] Azure Service Principalとは何ですか?
-
[解決済み] Azure Cloud Shell で Set-AzContext が動作するが、Azure PowerShell では動作しない。
-
[解決済み] Azureはどのようなスタック/プログラミング言語で書かれているのですか?
-
[解決済み] ARMのテンプレートです。パラメータで名前を設定したリソースを参照する方法
-
[解決済み】Azure WebjobsとAzure Functionsの比較:選び方
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Azureウェブサイトのメッセージ「このディレクトリまたはページを表示する権限がありません。どうすればいい?
-
[解決済み] Set-AzStorageBlobContentを使用して、プロンプトなしで新しいコンテンツのみをアップロードする。
-
[解決済み] AzureWebJobsDashboardの接続文字列情報はどこで手に入りますか?
-
[解決済み] バックエンドの初期化が必要なため、"terraform init" を実行してください。
-
[解決済み] レガシーAzure MFAをPhoneFactorで使用すると、エラー149が発生します。
-
[解決済み] Azure Application InsightsでBeginScopeを使うには(https://portal.azure.com)?
-
[解決済み] Azure Service Principalとは何ですか?
-
[解決済み] Azureはどのようなスタック/プログラミング言語で書かれているのですか?
-
[解決済み】Azure Web SiteとAzure Web Roleの違いは何ですか?
-
[解決済み】Azure WebjobsとAzure Functionsの比較:選び方