Почему не удается выполнить команду "az vm secret format" при подготовке SSL-сертификата для развертывания виртуальной машины Linux?

Я пытаюсь подготовить сертификат SSL для развертывания на виртуальной машине Linux, размещенной в Azure, следуя инструкциям, приведенным на странице:

HTTPS-доступ к виртуальной машине Ubuntu Azure

Первая строка:

$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 ответ

Решение

Странная вещь Раньше команда 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, которая выдает ошибку, также будет работать в моем тесте. Так что это немного странно. И я обнаружил, что в свойствах по умолчанию есть что-то другое.

РЕДАКТИРОВАТЬ

Я думаю, что лучше запускать команду 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"
Другие вопросы по тегам