Terraform SQL创建从可变
我在tfvars定义的用户的用户:Terraform SQL创建从可变
test_database_users = ["td" , "tdus", "tdbusrs"]
资源被定义为:
resource "template_dir" "test_db_users" { ...
vars {
db_tusers = ${element(var.test_database_users, count.index)}"
}
}
试图创建SQL命令来创建每个数据库用户不工作:
CREATE USER ${element(db_tusers, 0)} FOR LOGON ${element(db_tusers, 0)}; EXEC sp_addrolemember 'db_datareader','${element(db_tusers, 0)}'
GO
我正在努力使用正确的语法来使每个用户进入create user命令。
回答:
使Terraform适用于单个案例通常更直接,然后使用count
参数将其扩展到> 1个案例。
作为文档mention,您无法访问模板内部的插值函数,您需要将它们传递给template_dir
中的variables
资源。
要访问通常可对terraform配置插补(如其他变量,资源属性,模块输出,等等),你必须通过增值经销商揭露他们[...]
对于单个database_user
,我们通过database_user
为进入template_dir
作为${user}
sql_templates/create_user.sql
main.tf
variable "database_user" { default = "td"
}
resource "template_dir" "config" {
source_dir = "sql_templates"
destination_dir = "sql_scripts"
vars = {
user = "${var.database_user}"
}
}
这就造成了预期的输出
. ├── main.tf
├── sql_scripts
│ └── create_user.sql
└── sql_templates
└── create_user.sql
扩大这个到多个database_users
,你可以利用count
的 template_dir
资源内。
main.tf
variable "database_users" { default = ["td", "tdus", "tdbusrs"]
}
resource "template_dir" "config" {
source_dir = "sql_templates"
destination_dir = "sql_scripts/${var.database_users[count.index]}/"
count = "${length(var.database_users)}"
vars = {
user = "${element(var.database_users, count.index)}"
}
}
注:采用${var.database_users[count.index]}
内部 desination_dir
防止从使用相同的目的地为所有 绘制输出terraform,而是为每个用户创建
. ├── main.tf
├── sql_scripts
│ ├── td
│ │ └── create_user.sql
│ ├── tdbusrs
│ │ └── create_user.sql
│ └── tdus
│ └── create_user.sql
└── sql_templates
└── create_user.sql
一个新的子文件夹以上是 Terraform SQL创建从可变 的全部内容, 来源链接: utcz.com/qa/267238.html