Terraform 地形:从variables.tf到vault。如何解决拱顶地形中的_
我有一个Terraform代码(使用Terraform v0.12.21),它在基础设施端构建一个GKE和一个CloudSQL,在部署端,在GKE内部署N个web服务器吊舱 在variables.tf文件中,我定义了一个“wordpress\u site”数组。 现在,当需要一个新的部署时,我只需在“default”中添加一个新项目,并使用Terraform 地形:从variables.tf到vault。如何解决拱顶地形中的_,terraform,hashicorp-vault,terraform0.12+,Terraform,Hashicorp Vault,Terraform0.12+,我有一个Terraform代码(使用Terraform v0.12.21),它在基础设施端构建一个GKE和一个CloudSQL,在部署端,在GKE内部署N个web服务器吊舱 在variables.tf文件中,我定义了一个“wordpress\u site”数组。 现在,当需要一个新的部署时,我只需在“default”中添加一个新项目,并使用terraformapply完成部署 variables.tf包含如下内容: variable "wordpress_site" {
terraformapply
完成部署
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 function和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 apply之前进行vault登录
,但是,由于我想部署3000多个WordPress网站,我想让它们都在vault存储中定义并使用vault引擎进行组织,但是,通过这些更改调用它们的最佳方式是什么
另外,如何将它们全部放在Vault中?澄清一下:您希望从
variables.tf
文件中删除机密值,而将它们存储在Vault中?在Vault中设置kv
秘密引擎,并将每个站点的秘密放入Vault条目中,使用与变量中的密钥相同的名称。tf
,有什么不对?然后使用vault\u generic\u secret
访问它们。