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 Azure Resource Manager. Com esses modelos, você pode prototipar seu 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 visualização, 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 codificados nos modelos do Gestor de Recursos do Azure falham quando se tenta implantá-los no Azure Stack Hub. Você pode criar dinamicamente pontos de extremidade de serviço usando as funções reference
e concatenate
para recuperar valores do provedor de recursos durante a implantação. Por exemplo, em vez de codificar blob.core.windows.net
no seu template, recupere primaryEndpoints.blob para definir o endpoint osDisk.URI de forma dinâmica:
"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 da API
As versões de serviço do Azure podem diferir entre o Azure e o Azure Stack Hub. Cada recurso requer o atributo apiVersion, que define os recursos oferecidos. Para garantir a compatibilidade da 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
Azure Resource Manager função fornece as capacidades necessárias para criar modelos dinâmicos. Como exemplo, você pode usar funções para tarefas como:
- Concatenação ou remoção de espaços de cadeias de caracteres.
- Referenciação de valores de outros recursos.
- Iteração de recursos para implantar várias instâncias.
Estas funções não estão disponíveis no Azure Stack Hub:
- Pular
- Tome
Localização do recurso
Os modelos do Azure Resource Manager usam um atributo location
para colocar recursos durante a implantação. No Azure, os locais referem-se a uma região como o Oeste dos EUA ou a América do Sul. No Azure Stack Hub, os locais são diferentes porque o Azure Stack Hub está no seu datacenter. Para garantir que os modelos sejam transferíveis entre o Azure e o Azure Stack Hub, você deve fazer referência ao 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 uso dessa 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"
}
}
]