Sun*_*eha 7 terraform hashicorp-vault
我正在使用带有 consul 的保管库服务器作为存储后端,并尝试使用 terraform 中的保管库提供程序获取密码值。但它没有获取它的价值。我将我的机密存储在位置机密/实例中
主文件
provider "vault" {
address = "https://<IP_ADDRESS>:<PORT_NUMBER>"
token = "118bb796-d715-8ce4-b987-7f354ff3f5a7"
}
data "vault_generic_secret" "mypass"{
path = "secret/instances/password"
}
output "mypassword" {
value = "${data.vault_generic_secret.mypass.data["value"]}"
}
Run Code Online (Sandbox Code Playgroud)
当我运行 terraform apply 它显示:
data.vault_generic_secret.mypass: Refreshing state...
data.vault_generic_secret.mypass: Refreshing state...
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
Run Code Online (Sandbox Code Playgroud)
请建议我在这里做错了什么,因为它没有从保险库中获取密码值。
我也遇到了类似的问题并找到了这篇文章。就我而言,问题在于 terraform 和 Vault 之间的兼容性。我使用的是 KV 版本 2,它与 terraform v0.11.10 不兼容。
相关问题:GitHub 链接
因此,我将尝试用工作示例和环境详细信息来写我的答案,因为它可能会对其他人有所帮助。
Vault版本:Vault 0.10.1
秘密引擎类型:KV 版本 1
路径:srekv1/development
Terraform 版本:Terraform v0.11.10
用于获取秘密的 Terraform 代码:
provider "vault" {
address = "https://vault-myappXXX.net"
skip_tls_verify = true
token = "95XXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
data "vault_generic_secret" "srekv1" {
path = "srekv1/development"
}
output Namekv1 {
value = "${data.vault_generic_secret.srekv1.data["Name"]}"
}
Run Code Online (Sandbox Code Playgroud)
小智 -3
vault_generic_secret
应该在resource
块中定义。
您已经在data
块中定义了它。
参考: https: //www.terraform.io/docs/providers/vault/d/aws_access_credentials.html
归档时间: |
|
查看次数: |
7181 次 |
最近记录: |