いくつかの変数がConsulから読み込まれたTerraformスクリプトがあります。このスクリプトを2つの異なるシナリオで使用したいと思います。
Terraformのドキュメントを確認したところ、Consulで定義された変数を別の変数のデフォルト値として使用できないことがわかりました。だから私は次の回避策に終わった:
## vars.tf
## emulating undefined value using "null" string
variable "my_optional_variable" { default = "null" }
## main.tf
my_optional_variable = "${var.my_optional_variable == "null" ? data.consul_keys.my_optional_variable : var.my_optional_variable}"
誰かが私にそれを行うより良い方法を教えてもらえますか? 「null」文字列によるハッキングを回避する方法?
ありがとう
別のオプションは coalesce
で、空の文字列で機能するため、"null"
文字列よりも少し優れています。
2つの変数/データソースを使用したシナリオまたは同様のケースを想定
variable "my_default_value" {
default = "CentOS 7"
}
variable "my_optional_variable" {
default = ""
}
"指定された引数から最初の空でない値を取得できます。少なくとも2つの引数を指定する必要があります。"
data "openstack_images_image_v2" "bastion_image" {
name = "${coalesce(var.my_optional_variable, var.my_default_value)}"
}
オーバーライドファイル を使用できます。したがって、vars.tf
が含まれている場合:
variable "my_optional_variable" {
default = "null"
}
そして、以下を含むoverride.tf
:
variable "my_optional_variable" {
default = "not null"
}
その場合、${var.my_optional_variable}
はnot null
と等しくなるはずです。オーバーライドファイルは最後に読み込まれ、構成にマージされます。むしろ、ディレクトリ内の他の.tf
ファイルのように一緒に追加されます。