我正在尝试按照提供的说明准备SSL证书,以部署到Azure上托管的Linux VM:
HTTPS access to Azure ubuntu Virtual Machine
第一行:
$secret=$(az keyvault secret list-versions --vault-name myVaultName --name myCertName --query "[?attributes.enabled].id" --output tsv)
执行正常,并且$ secret包含期望值。但是,当我执行第二行时:
$vm_secret=$(az vm secret format --secret "$secret")
我得到一个错误:
unable to find vault 'myVaultName' in current subscription.
我仔细检查了命令格式和参数,没有发现任何错误。怎么回事?
答案 0 :(得分:1)
这是一个奇怪的事情。 CLI命令以前可以正常运行,但是现在它需要添加具有密钥库名称的参数--keyvault
和具有资源组名称的-g
,如下所示:
$vm_secret=$(az vm secret format --secret "$secret" -g groupName --keyvault keyvaultName)
或者只需将参数--keyvault
与密钥库ID添加在一起:
$vm_secret=$(az vm secret format --secret "$secret" --keyvault keyvault_resourceId)
以便它可以正常工作而不会出现错误。
注意:如果使用几个月前创建的旧密钥库,则给出错误的CLI命令也可以在我的测试中使用。所以有点奇怪。而且我发现属性默认值有些不同。
我认为最好在Linux环境中运行CLI命令,Windows和Linux中的CLI rin有所不同,有可能导致错误。 Linux中的脚本如下所示:
az keyvault certificate create --vault-name keyvault_name --name cert_name --policy "$(az keyvault certificate get-default-policy)"
secret=$(az keyvault secret list-versions --vault-name keyvault_name --name cert_name --query "[?attributes.enabled].id" --output tsv)
vm_secret=$(az vm secret format --secrets "$secret" --resource-group group_name --keyvault keyvault_name)
az vm update -g charles -n azureUbuntu18 --set osProfile.secrets="$vm_secret"