Ключевые значения хранилища из развертывания и параметры связанных шаблонов

У меня есть шаблон для создания хранилища ключей и секрет в нем. У меня также есть шаблон служебной фабрики, который требует от хранилища ключей трех вещей: URI хранилища, URL-адреса сертификата и отпечатка сертификата.

Если я создаю хранилище ключей и секрет с помощью PowerShell, легко вручную скопировать эти 3 вещи из выходных данных и вставить их в параметры шаблона служебной фабрики. Однако то, что я надеюсь сделать из-за того, что этот сертификат имеет тот же жизненный цикл, что и кластер служебной фабрики, - это связать шаблон хранилища ключей с шаблоном служебной фабрики, поэтому, когда я развертываю хранилище ключей и секрет (который, кстати, является ключом, который был закодирован в строку base 64. Я мог бы иметь это как секрет в еще одном хранилище ключей ...), я могу передать 3 значения в качестве параметров.

Итак, у меня есть два вопроса.

  1. Как мне получить 3 значения в шаблоне руки. Powershell выводит их как ResourceId хранилища ключей, Id секрета и Version секрета. Моя попытка:

    "sourceVaultValue": {
        "value": "resourceId('Microsoft.KeyVault/vaults/', parameters('keyVaultName')"
        },
    "certificateThumbprint": {
        "value": "[listKeys(resourceId('secrets', parameters('secretName')), '2015-06-01')"
        },
    "certificateUrlValue": { "value": "[concat('https://', parameters('keyVaultName'), '.vault.azure.net:443/secrets/', parameters('secretName'), resourceId('secrets', parameters('secretName')))]"
    

Но certificateUrlValue неверен. Вы можете видеть, что я пробовал со listKeys и без него, но, похоже, ни один из них не работал ... (отпечаток находится внутри самого certUrl)

  1. Если бы я получил правильные значения, я бы попытался передать их в качестве параметров в следующий шаблон. Однако рассматриваемый шаблон имеет намного больше параметров, чем 3, которые я хочу передать. Итак, возможно ли иметь элемент parametersLink для ссылки на файл параметров, а также элемент параметров только для этих 3? Или есть намеченный способ сделать это?

Ваше здоровье


person Edward Rixon    schedule 10.05.2016    source источник
comment
Эд, просто чтобы убедиться, это фрагмент JSON над разделом выходных данных шаблона, который создает секреты?   -  person bmoore-msft    schedule 10.05.2016
comment
Изначально этого не было. Он был у меня в элементе параметров для связанного шаблона, затем я переместил его в раздел вывода для тестирования. Мне приходит в голову, что мне может понадобиться «ссылка» перед ними? Я не могу проверить банкомат. Придется завтра собраться снова :)   -  person Edward Rixon    schedule 10.05.2016


Ответы (1)


Хорошо, попробуйте это, когда вернетесь к клавиатуре ...

1) для uri вы можете использовать такой вывод:

"secretUri": {
  "type": "string",
  "value": "[reference(resourceId('Microsoft.KeyVault/vaults/secrets', parameters('keyVaultName'), parameters('secretName'))).secretUri]"
}

Для № 2 вы не можете смешивать и сопоставлять ссылку и некоторые значения, это одно или другое.

Пара мыслей о том, как это сделать (это немного зависит от того, как вы хотите структурировать остальную часть своего развертывания) ...

  • Один из способов подумать об этом - вместо того, чтобы вкладывать SF, развернуть их в одном шаблоне, поскольку у них одинаковый жизненный цикл.
  • вместо того, чтобы вкладывать шаблон SF, вложите шаблон KV и укажите результаты этого развертывания в шаблоне SF ...

Помимо этого, я не могу придумать ничего элегантного - поскольку вы хотите передать «динамические» параметры во вложенное развертывание, на самом деле единственный способ сделать это - динамически записать файл параметров за ссылкой или передать все параметры в развертывание. ресурс.

HTH - LMK, если нет ...

person bmoore-msft    schedule 12.05.2016
comment
Хорошо, спасибо. Я думаю, что иногда я застреваю в способе сделать что-то после того, как начал, а затем работаю над этим, пока это не сработает, или я застреваю. Ваши альтернативные решения хороши, они заставляют меня осознать, что я без колебаний пробую придумывать новые решения. - person Edward Rixon; 12.05.2016
comment
Я предполагаю, что свойство secretUri секретного объекта подробно описано в документации по секретам, но мне не удалось его найти. Я посмотрел здесь msdn.microsoft.com/en-us/library/azure /mt620026.aspx для документа KV, чтобы узнать, какое свойство использовать для получения идентификатора ресурса KV, и я вижу, что могу использовать id, но это не работает. Например, vaultUri работает: '[reference (resourceId (' Microsoft.KeyVault / vaults / ', parameters (' keyVaultName '))). VaultUri]', как и tenantId .. - person Edward Rixon; 12.05.2016
comment
Итак, теперь я вижу, что элемент можно найти в проводнике ресурсов. Может ли быть, что вы можете получить только те значения, которые вложены в свойства в проводнике ресурсов? - person Edward Rixon; 12.05.2016
comment
resources.azure.com - действительно хорошее руководство (наверняка более актуальное, чем документация). Если вы видите что-то там, вы должны иметь возможность ссылаться на это, хотя есть некоторые неясные пути к ресурсам, которые не нравятся функции (например, расширения ресурсов). Но в целом да, это хорошее руководство. PowerShell / CLI также может помочь, но сайт проще IMO. - person bmoore-msft; 13.05.2016