问题描述
我有一个terraform代码(带有terraform v0.12.21),该代码在基础架构方面构建一个GKE和Cloudsql,在部署方面,在GKE内部署N个Web服务器容器。
在variables.tf文件中,我定义了一个“ wordpress_site”数组。
如今,当需要进行新的部署时,我只需在“默认”中添加一个新项目,并使用terraform apply
完成部署。
variables.tf包含以下内容:
variable "wordpress_site" {
type = map(object({
name = string
url = string
disk = string
MysqL_passwd = string
api_token = string
api_key = string
api_country = string
api_language = string
api_wp_lang = string
api_colour = string
template = string
}))
default = {
example1 = {
name = "example1"
url = "example1.com"
disk = "1Gi"
MysqL_passwd = "PaSSwOrd1"
api_token = "TokenHERE"
api_key = "APIHere"
api_country = "it"
api_language = "it"
api_wp_lang = "it_IT"
api_colour = "1"
template = "p1"
}
example2 = {
name = "example2"
url = "example2.com"
disk = "1Gi"
MysqL_passwd = "PaSSwOrd2"
api_token = "TokenHERE"
api_key = "APIHere"
api_country = "uk"
api_language = "en"
api_wp_lang = "en_US"
api_colour = "1"
template = "p1"
}
...
...
...
exampleN = {
name = "exampleN"
url = "exampleN.com"
disk = "1Gi"
MysqL_passwd = "PaSSwOrdN"
api_token = "TokenHERE"
api_key = "APIHere"
api_country = "uk"
api_language = "en"
api_wp_lang = "en_US"
api_colour = "1"
template = "p1"
}
}
然后,当我调用它们进行部署时,我正在使用for_each函数和each.value.XXX来获取其变量:
resource "kubernetes_deployment" "wordpress" {
for_each = var.wordpress_site
Metadata {
name = each.value.name
labels = {
app = each.value.name
app-function = "wordpress"
}
}
...
...
}
好吧,让Vault作为terraform的提供者,所以在main.tf中,我将添加新的提供者,例如:
provider "vault" {
address = "http://XXX.YYY.ZZZ.TTT:8200"
}
并在调用terraform应用之前制作一个vault login
,但是,由于我要部署3000多个WordPress网站,因此我希望将它们全部定义在Vault存储中并通过Vault引擎进行组织,但是进行这些更改的最佳方式是什么?
还有,如何将它们全部放入保险柜?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)