Desenvolver modelos para o Azure Stack Hub com o Azure Resource Manager

À medida que você desenvolve seu aplicativo, é importante ter portabilidade de modelo entre o Azure e o Azure Stack Hub. Este artigo fornece considerações para desenvolver modelos de Resource Manager do Azure. Com esses modelos, você pode criar protótipos do aplicativo e testar a implantação no Azure sem acesso a um ambiente do Azure Stack Hub.

Disponibilidade do provedor de recursos

O modelo que você planeja implantar deve usar apenas os serviços do Microsoft Azure que já estão disponíveis ou em versão prévia no Azure Stack Hub.

Namespaces públicos

Como o Azure Stack Hub está hospedado em seu datacenter, ele tem namespaces de ponto de extremidade de serviço diferentes da nuvem pública do Azure. Como resultado, os pontos de extremidade públicos embutidos em código nos modelos de Resource Manager do Azure falham quando você tenta implantá-los no Azure Stack Hub. Você pode criar pontos de extremidade de serviço dinamicamente usando as reference funções e concatenate para recuperar valores do provedor de recursos durante a implantação. Por exemplo, em vez de codificar blob.core.windows.net em seu modelo, recupere primaryEndpoints.blob para definir dinamicamente o ponto de extremidade osDisk.URI :

"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
 '/',variables('OSDiskName'),'.vhd')]"}}

Controle de versão de API

As versões de serviço do Azure podem ser diferentes entre o Azure e o Azure Stack Hub. Cada recurso requer o atributo apiVersion , que define os recursos oferecidos. Para garantir a compatibilidade de versão da API no Azure Stack Hub, as seguintes versões de API são válidas para cada provedor de recursos:

Provedor de recursos apiVersion
Computação 2015-06-15
Rede 2015-06-15, 2015-05-01-preview
Armazenamento 2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVault 2015-06-01
Serviço de Aplicativo 2015-08-01

Funções de modelo

As funções de Resource Manager do Azure fornecem os recursos necessários para criar modelos dinâmicos. Por exemplo, você pode usar funções para tarefas como:

  • Concatenando ou cortando cadeias de caracteres.
  • Referenciando valores de outros recursos.
  • Iterando em recursos para implantar várias instâncias.

Essas funções não estão disponíveis no Azure Stack Hub:

  • Ignorar
  • Take

Localização do recurso

Os modelos de Resource Manager do Azure usam um location atributo para colocar recursos durante a implantação. No Azure, os locais se referem a uma região como Oeste dos EUA ou América do Sul. No Azure Stack Hub, os locais são diferentes porque o Azure Stack Hub está em seu datacenter. Para garantir que os modelos sejam transferíveis entre o Azure e o Azure Stack Hub, você deve referenciar o local do grupo de recursos à medida que implanta recursos individuais. Você pode fazer isso usando [resourceGroup().Location] para garantir que todos os recursos herdem o local do grupo de recursos. O código a seguir é um exemplo de como usar essa função durante a implantação de uma conta de armazenamento:

"resources": [
{
  "name": "[variables('storageAccountName')]",
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "[variables('apiVersionStorage')]",
  "location": "[resourceGroup().location]",
  "comments": "This storage account is used to store the VM disks",
  "properties": {
  "accountType": "Standard_LRS"
  }
}
]

Próximas etapas