Поделиться через


Перенос схем в стеки развертывания

В этой статье объясняется, как преобразовать определения и назначения схемы в стеки развертывания. Стеки развертывания — это новые средства в Microsoft.Resources пространстве имен, в результате чего функции Azure Blueprint в этой области.

Шаги миграции

  1. Экспортируйте определения схемы в файлы JSON определения схемы, которые включают артефакты политик Azure, назначения ролей Azure и шаблоны. Дополнительные сведения см. в статье "Экспорт определения схемы".

  2. Преобразуйте json-файлы определения схемы в один шаблон ARM или Bicep-файл для развертывания с помощью стеков развертывания с помощью следующих рекомендаций:

    • Назначения ролей: преобразование любых назначений ролей.
    • Политики: преобразуйте все назначения политик в синтаксис Bicep (или шаблон JSON ARM), а затем добавьте их в основной шаблон. Вы также можете внедрить его policyDefinitions в шаблон JSON.
    • Шаблоны. Преобразование всех шаблонов в основной шаблон для отправки в стек развертывания. Вы можете использовать модули в Bicep, внедрять шаблоны в виде вложенных шаблонов или ссылок шаблонов, а также использовать спецификации шаблонов для хранения шаблонов в Azure. Спецификации шаблонов не требуются для использования стеков развертывания.
    • Блокировки: стек развертывания DenySettingsMode позволяет блокировать нежелательные изменения с помощью DenySettingsMode (аналогично блокировкам схемы). Их можно настроить с помощью Azure CLI или Azure PowerShell. Для этого необходимо, чтобы соответствующие роли могли задавать параметры запрета. Дополнительные сведения см. в стеках развертывания.
  3. При необходимости можно создать спецификации шаблонов для преобразованных шаблонов ARM или Bicep-файлов. Спецификации шаблонов позволяют хранить шаблоны и их версии в среде Azure, упрощая общий доступ к шаблонам в организации. Стеки развертывания позволяют развертывать определения спецификаций шаблона или файлы шаблонов ARM или Bicep в указанной целевой области.

Пример

Следующий файл Bicep является примером файла миграции.

targetScope = 'subscription'

param roleAssignmentName string = 'myTestRoleAssignment'
param roleDefinitionId string = guid(roleAssignmentName)
param principalId string = guid('myTestId')

param policyAssignmentName string = 'myTestPolicyAssignment'
param policyDefinitionID string = '/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d'

param rgName string = 'myTestRg'
param rgLocation string = deployment().location
param templateSpecName string = 'myNetworkingTs'

// Step 1 - create role assignments
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
  name: guid(roleAssignmentName)
  properties: {
    principalId: principalId
    roleDefinitionId: roleDefinitionId
  }
}

// Step 2 - create policy assignments
resource policyAssignment 'Microsoft.Authorization/policyAssignments@2022-06-01' = {
    name: policyAssignmentName
    scope: subscriptionResourceId('Microsoft.Resources/resourceGroups', resourceGroup().name)
    properties: {
        policyDefinitionId: policyDefinitionID
    }
}

// Step 3 - create template artifacts via modules (or template specs)
resource rg1 'Microsoft.Resources/resourceGroups@2021-01-01' = {
  name: rgName
  location: rgLocation
}

module vnet 'templates/bicep/vnet.bicep' = if (rgName == 'myTestRg') {
  name: uniqueString(rgName)
  scope: rg1
  params: { location: rgLocation }
}