Desenvolver modelos para Azure Stack Hub com Azure Resource Manager

Ao desenvolver a sua aplicação, é importante ter portabilidade do modelo entre Azure e Azure Stack Hub. Este artigo fornece considerações para o desenvolvimento de modelos do Gestor de Recursos Azure. Com estes modelos, pode protótipo da sua aplicação e testar a implementação em Azure sem acesso a um ambiente Azure Stack Hub.

Disponibilidade do fornecedor de recursos

O modelo que pretende implementar só deve utilizar Microsoft Azure serviços que já estão disponíveis, ou em pré-visualização, no Azure Stack Hub.

Espaços públicos

Como o Azure Stack Hub está hospedado no seu datacenter, tem diferentes espaços de nome de ponto final de serviço do que a nuvem pública Azure. Como resultado, os pontos finais públicos codificados em modelos Azure Resource Manager falham quando tenta implantá-los no Azure Stack Hub. Pode construir dinamicamente os pontos finais de serviço utilizando as reference funções e concatenate funções para recuperar valores do fornecedor de recursos durante a implementação. Por exemplo, em vez de codificar duramente blob.core.windows.net no seu modelo, recupere os blob.core.windows.net para definir dinamicamente o ponto final 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')]"}}

Versão API

As versões de serviço Azure podem diferir entre Azure e Azure Stack Hub. Cada recurso requer o atributo apiversion, que define as capacidades oferecidas. Para garantir a compatibilidade da versão API no Azure Stack Hub, as seguintes versões API são válidas para cada fornecedor de recursos:

Fornecedor de Recursos apiVersion
Computação 2015-06-15
Rede 2015-06-15, 2015-05-01-pré-visualização
Armazenamento 2016-01-01, 2015-06-15, 2015-05-01-pré-visualização
KeyVault 2015-06-01
Serviço de Aplicações 2015-08-01

Funções de modelos

As funções de Gestor de Recursos Azure fornecem as capacidades necessárias para construir modelos dinâmicos. Como exemplo, pode utilizar funções para tarefas como:

  • Cordas de concatenação ou corte.
  • Referenciação de valores de outros recursos.
  • Itering em recursos para implantar várias instâncias.

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

  • Ignorar
  • Realizar

Localização do recurso

Os modelos do Gestor de Recursos Azure usam um location atributo para colocar recursos durante a implantação. Em Azure, as localizações referem-se a uma região como a América do Oeste ou a América do Sul. No Azure Stack Hub, as localizações são diferentes porque o Azure Stack Hub está no seu datacenter. Para garantir que os modelos são transferíveis entre O Azure e o Azure Stack Hub, deve referir a localização do grupo de recursos à medida que implementa recursos individuais. Pode fazê-lo para [resourceGroup().Location] garantir que todos os recursos herdem a localização do grupo de recursos. O seguinte código é um exemplo de utilização desta função durante a implementaçã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"
  }
}
]

Passos seguintes