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

Я пытаюсь подготовить сертификат 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 Ответ

0 голосов
/ 24 января 2019

Странная вещь. Раньше команда 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"
...