Странная вещь. Раньше команда CLI работала нормально, но теперь ей нужно добавить параметр --keyvault
с именем хранилища ключей и -g
с именем группы ресурсов, например:
$vm_secret=$(az vm secret format --secret "$secret" -g groupName --keyvault keyvaultName)
Или просто добавьте параметр --keyvault
с идентификатором хранилища ключей:
$vm_secret=$(az vm secret format --secret "$secret" --keyvault keyvault_resourceId)
чтобы он мог нормально работать, не сообщая об ошибке.
Примечание: если вы используете старое хранилище ключей, созданное несколько месяцев назад, команда CLI, которая выдает ошибку, также будет работать в моем тесте. Так что это немного странно. И я обнаружил, что в свойствах по умолчанию есть что-то другое.
EDIT
Я думаю, что лучше запускать команду CLI в среде Linux, есть нечто иное, чем CLI rin в Windows и Linux, возможно, это может вызвать ошибку. И скрипт в 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"