Terraform:检查azure vault中是否存在机密
我正在使用terraform进行Azure部署,并尝试将ssh密钥存储在Azure vault中。如果该密钥在vault中不存在,我希望创建并存储ssh密钥,否则我希望重用该密钥(如果存在) 这是我试过的Terraform:检查azure vault中是否存在机密,terraform,Terraform,我正在使用terraform进行Azure部署,并尝试将ssh密钥存储在Azure vault中。如果该密钥在vault中不存在,我希望创建并存储ssh密钥,否则我希望重用该密钥(如果存在) 这是我试过的 首先独立创建vault,因为它包含所有我的关键点 使用数据测试密钥是否存在,但当密钥不存在时,我总是得到错误行11。我想不出怎么做 注意:不能重新运行tls_私钥,因为ssh密钥将更改 有什么想法吗? 感谢实际的密钥库API没有提供“密钥存在”测试功能(除了其他答案中提到的在C#代码/API中
感谢实际的密钥库API没有提供“密钥存在”测试功能(除了其他答案中提到的在C#代码/API中实现此功能的一些方法之外) 我认为你可以通过阅读钥匙和捕捉错误来逃脱惩罚,看看Terraform的“尝试并继续”方法: 因此,您可以创建vault(步骤1),然后使用try功能读取步骤2中的密钥。
注意:try(..)的工作原理是接受错误并继续使用其第二个参数。因此,您首先在第一个参数中读取密钥,然后在第二个参数中创建密钥。实际密钥库API没有提供“密钥存在”测试功能(除了其他答案中提到的在C代码/API中实现此功能的一些方法之外) 我认为你可以通过阅读钥匙和捕捉错误来逃脱惩罚,看看Terraform的“尝试并继续”方法: 因此,您可以创建vault(步骤1),然后使用try功能读取步骤2中的密钥。
注意:try(..)的工作原理是接受错误并继续使用其第二个参数。因此,您首先在第一个参数中读取键,然后在第二个参数中创建键。Hi,我不知道如何为try命令编写正确的语句。在第一个try参数中如何访问资源,因为我无法声明资源而不出错?您好,我不知道如何为try命令编写正确的语句。由于我不能在没有错误的情况下声明资源,因此如何在first try参数中访问该资源?
data "azurerm_resource_group" "rg_transverse" {
name = "k8s-transversal-rg"
}
# Retrieving vault
data "azurerm_key_vault" "data-cluster-vault" {
name = "k8s-transverse-vault"
resource_group_name = data.azurerm_resource_group.rg_transverse.name
}
data "azurerm_key_vault_secret" "data-cluster-key-public-openssh" {
name = "cluster-key-public-openssh"
key_vault_id = "${data.azurerm_key_vault.data-cluster-vault.id}"
}
output "secret_value2" {
value = "${data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value}"
}
# Creating ssh key only if doesn't exist
resource "tls_private_key" "cluster-key" {
count = (data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value == "" ) ? 1 : 0
algorithm = "RSA"
rsa_bits = "4096"
}
# store ssh key into vault if created
resource "azurerm_key_vault_secret" "cluster-key-public-openssh" {
depends_on = [tls_private_key.cluster-key]
count = (data.azurerm_key_vault_secret.data-cluster-key-public-openssh.value == "" ) ? 1 : 0
name = "cluster-key-public-openssh"
value = tls_private_key.cluster-key[count.index].public_key_openssh
key_vault_id = data.azurerm_key_vault.data-cluster-vault.id
}