我想創建一個模塊
在我的路由 variable.tfvars 檔案中,我在輸入下方傳遞。
rds_aurora = [
{
cluster_identifier = "aurora-cluster-mysql-qa"
cluster_instance_count = 2
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
},
{
cluster_identifier = "aurora-cluster-mysql-dev"
cluster_instance_count = 1
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
}
}
模塊.tf檔案
resource "aws_rds_cluster_instance" "cluster_instances" {
for_each = { for rds_aurora_instance in var.rds_aurora : "${rds_aurora_instance.cluster_identifier}-{cluster_instance_count}" => rds_aurora_instance }
identifier = each.value.key
cluster_identifier = each.value.cluster_identifier
engine = each.value.engine
engine_version = each.value.engine_version
}
我正在嘗試以下面的形式轉換變數,以便可以在模塊中使用它。
aurora-cluster-mysql-qa-0 => {
cluster_identifier = "aurora-cluster-mysql-qa"
cluster_instance_count = 2
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
}
aurora-cluster-mysql-qa-1 => {
cluster_identifier = "aurora-cluster-mysql-qa"
cluster_instance_count = 2
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
}
aurora-cluster-mysql-dev-0 => {
cluster_identifier = "aurora-cluster-mysql-dev"
cluster_instance_count = 2
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
}
下面的運算式似乎不起作用。請幫忙。我只想使用 for-each 所以在修改/洗掉任何塊期間,我不會遇到可變塊順序問題。
for_each = { for rds_aurora_instance in var.rds_aurora : "${rds_aurora_instance.cluster_identifier}-{cluster_instance_count}" => rds_aurora_instance }
uj5u.com熱心網友回復:
這不是一個簡單的轉換,你rds_aurora是一個物件陣列,我們在該物件的一個??屬性中進行計數,我們將需要一個中間變數來轉換它,這將需要一些回圈......
這是我會做的:
provider "aws" {
region = "us-east-2"
}
locals {
rds_aurora = [
{
cluster_identifier = "aurora-cluster-mysql-qa"
cluster_instance_count = 2
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
},
{
cluster_identifier = "aurora-cluster-mysql-dev"
cluster_instance_count = 1
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.07.1"
}
]
data = { for i in flatten([
for x in local.rds_aurora :
[
for y in range(x.cluster_instance_count) :
{
"id" = y
"cluster_identifier" = x.cluster_identifier
"cluster_instance_count" = 2
"engine" = x.engine
"engine_version" = x.engine_version
}
]
]) : "${i.cluster_identifier}_${i.id}" => i
}
}
output "new_data" {
value = local.data
}
讓我們分解一下發生的事情,我們有 3 個回圈
for i in flatten([
這個我們把最終的物件放在一起for x in local.rds_aurora
只是對 rds_aurora 中的元素進行回圈for y in range(x.cluster_instance_count)
這是獲取 id (0, 1) 的那個,我們稍后將連接到最終物件
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/352774.html
標籤:亚马逊网络服务 地形 亚马逊 terraform-provider-aws
