代码之家  ›  专栏  ›  技术社区  ›  ProfNimrod

为什么在准备LinuxVM部署的ssl证书时“az-vm-secret-format”命令失败?

  •  0
  • ProfNimrod  · 技术社区  · 6 年前

    我正在尝试准备一个SSL证书,以便部署到托管在Azure上的Linux虚拟机,操作说明如下:

    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.
    

    我再次检查了命令格式和参数,没有发现任何错误。发生什么事了?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Charles Xu    6 年前

    真奇怪。cli命令以前工作正常,但现在需要添加参数 --keyvault 具有密钥保管库名称和 -g 资源组名称如下:

    $vm_secret=$(az vm secret format --secret "$secret" -g groupName --keyvault keyvaultName)
    

    或者只是添加参数 ——钥匙库 使用密钥保管库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"