Jak uzyskać szablon ARM dla usług w Preview?

Jeden z naszych kolegów w Azurowym community, Kacper Mucha, uruchomił ostatnio swojego bloga. W związku z tym, że jest on niesamowitym ekspertem PowerShell w wydaniu chmurowym, na pewno będzie o czym czytać w miarę pojawiania się nowych wpisów.

Pierwszy wpis zawiera poradę jak wykonać inżynierię wsteczną szablonów ARMowych. W przypadku nowych usług w Azure, będących w Public Preview,  a tym bardziej tych, które udostępniane są tylko wybranym klientom Microsoft bardzo ciężko jest taki szablon samemu stworzyć. Główne powody to oczywiście brak kompletnej dokumentacji, brak przykładów, brak wpisów w sieci na ten temat. Sposób opisany przez Kacpra jest oczywiście jak najbardziej poprawny, wydaje mi się jednak, że przy użyciu dostępnych narzędzi da się operację wykonać w nieco bardziej przystępny sposób.

Historia wdrożeń dostępna w Portalu

Wdrożenie szablonu dokonywane jest w ramach jednej grupy zasobów (chociaż od niedawna mamy nieco większe spektrum możliwości) i każdorazowo składowane jest w historii wdrożeń w tej grupie. Niezależnie czy używamy szablonu z GitHuba lub Marketplace, czy wdrażamy własny szablon, nawet gdy wyklikujemy coś w portalu – wszystko ląduje w historii.

Dostęp do historii jest stosunkowo prosty. Na portalu wchodzimy do grupy zasobów, w której wykonaliśmy zmiany i otwieramy zakładkę “Deployments”. W zakładce mamy pełną historię wdrożeń od samego początku jej istnienia. Historia zawiera nie tylko szablon, ale również wszystkie parametry wejściowe oraz log z wykonanych kroków (niejednokrotnie zakończony błędami). W tym punkcie warto powtórzyć raz jeszcze część powyższego zdania – wszystkie parametry wejściowe, które zostały przekazane “plain text’em” są tam dostępne, mogą zawierać loginy/hasła, klucze – warto wtedy pomyśleć o KeyVault!

Szablon oczywiście możemy skopiować, zmodyfikować, wdrożyć ponownie – wszystko wewnątrz portalu. Wrażenia zbliżone są do Visual Studio i okienka “JSON Outline”, które zwykle jest używane przy tworzeniu szablonów. Kacper przytoczył BotService jak jedna z tych usług, która jest w Preview bez dobrych przykładów szablonów. Z historii uzyskałem taki szablon:

{
    "$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "String"
        },
        "location": {
            "type": "String"
        },
        "subscriptionId": {
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Web/sites",
            "kind": "functionapp,botapp",
            "name": "[parameters('name')]",
            "apiVersion": "2016-03-01",
            "location": "[parameters('location')]",
            "properties": {
                "name": "[parameters('name')]",
                "siteConfig": {
                    "appSettings": [
                        {
                            "name": "WEBSITE_NODE_DEFAULT_VERSION",
                            "value": "6.5.0"
                        }
                    ]
                }
            }
        }
    ]
}

Jak dobrać się do historii bez użycia Portalu?

Skoro historia leży “w Azure”, to na logikę powinna być ona dostępna z poziomu innych narzędzi.

Z PowerShella wydobywamy ją w następujący sposób:

#Deployments
Get-AzureRmResourceGroupDeployment -ResourceGroupName <RGName>

#Failed deployments
Get-AzureRmResourceGroupDeployment -ResourceGroupName <RGName>| Where-Object ProvisioningState -eq Failed

#Deployment details
Get-AzureRmResourceGroupDeploymentOperation -ResourceGroupName <RGName> -DeploymentName <DeplymentName>

#Download template
Save-AzureRmResourceGroupDeploymentTemplate -ResourceGroupName <RGName> -DeploymentName <DeplymentName>

Z Azure CLI:

#Deployments
az group deployment list --resource-group <RGName>

#Deployment details
az group deployment show --resource-group <RGName> --name <DeploymentName> --json

#Export template
az group deployment export --resource-group <RGName> --name <DeploymentName>

Podobne dane uzyskamy poprzez REST API i z resources.azure.com. Po prostu wybierz metodę, z którą czujesz się najbardziej komfortowo, zawartość będzie identyczna.

Daj znać jak Ty tworzysz szablony ARM. Może znasz jeszcze inny sposób jak je generować?

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *