azure - 为什么在准备 Linux VM 部署的 SSL 证书时,“az vm secret format”命令会失败?
问题描述
我正在尝试按照以下提供的说明准备 SSL 证书以部署到 Azure 上托管的 Linux VM:
第一行:
$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.
我仔细检查了命令格式和参数,没有发现任何问题。怎么了?
解决方案
这是一件很奇怪的事情。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 运行有些不同,可能会导致错误。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"
推荐阅读
- css - 数据表 - 将列中的所有项目设置在一行中
- kubernetes - Kubernetes 中有没有办法从 Helm 获取部署名称作为环境变量?
- html - Blazor 选择/选项未绑定
- docker-registry - 如何为 AWS ecr put-image 查找 Fluentd docker 镜像的镜像清单
- powershell - 使用路径中的变量按大小比较 2 个文件
- node.js - 如何使用 SXA CLI (Sitecore 9.3) 为 SXA 创建自定义主题?
- python - Keras CNN 预测输出仅在一个数字范围内进行预测
- javascript - 如何将 Json 数据加载到 Charts.js 图表中
- javascript - 使用 onMount 将类动态添加到元素
- c# - 如何使用 Parquet.net 从 Parquet 文件中仅读取列的一部分?