簡體   English   中英

具有計數0的Terraform資源和取決於資源的變量

[英]Terraform resource with count 0 and a variable depending on the resource

我正在嘗試使用Terraform在aws上創建s3存儲桶,在所有環境(dev,qa和prod)中都存在很少的存儲桶,而大多數存儲桶僅存在於1或2個環境中。 我正在使用count來有選擇地定義資源

所以在下面的代碼中,我只在環境是dev或qa時使用count和conditionals在S3中創建一個存儲桶。 但是當我運行prod環境的代碼時,我得到Error: module 's3-bucket-example': unknown variable referenced: 'lifecycle_rule_s3_bucket_example'; define it with a 'variable' block Error: module 's3-bucket-example': unknown variable referenced: 'lifecycle_rule_s3_bucket_example'; define it with a 'variable' block

每個存儲桶的lifecycle_rule在每個環境的相應var文件中定義,例如lifecycle_rule_s3_bucket_example在var-file.dev和var-file.qa中定義,但不在var-file.prod中定義,因為存儲桶存在於dev和qa中。 但由於prod中不存在桶,為什么我得到定義lifecycle_rule變量的錯誤? 我的猜測是,因為prod的count = 0,所以剩余的變量都不應該在模塊中。

module "s3-bucket-example" {
  source             = "./modules/s3"
  count              = "${var.aws-account == "dev"|| var.aws-account == "qa" ? 1 :0}"
  bucketname         = "${local.this_env_prefix}-s3-bucket-example"
  versioning-enabled = "true"
  lifecycle_rule     = "${var.lifecycle_rule_s3_bucket_example}"
  aws_account        = "${var.aws-account}"
}

在AWS(或任何其他提供商)實際創建任何資源之前,Terraform會執行驗證以檢查所有變量等是否已定義。

這樣,減少了在資源創建期間遇到錯誤的可能性。

猜猜你必須為你的prod env定義變量以及虛擬值......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM