Compartilhar via


Criar uma Frota de Computação do Azure usando um modelo do ARM (versão prévia)

Importante

A Frota de Computação do Azure está atualmente em versão prévia. As versões prévias são disponibilizadas com a condição de que você concorde com os termos de uso complementares. Alguns aspectos desse recurso podem alterar antes da GA (disponibilidade geral).

Este artigo aborda o uso de um modelo do ARM para criar uma Frota de Computação do Azure.

Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Pré-requisitos

  • Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.
  • Antes de usar a Frota de Computação, conclua o registro do recurso e configure os controles de acesso baseados em função (RBAC).

Registro do recurso

Registre o provedor de recursos da Frota de Computação do Azure com sua assinatura usando o PowerShell ou o portal do Azure. O registro pode levar até 30 minutos para aparecer como registrado com sucesso.

Register-AzResourceProvider -ProviderNamespace Microsoft.AzureFleet

Permissões de controle de acesso baseadas em função

Atribua as permissões RBAC apropriadas para usar a Frota de Computação do Azure.

  1. No portal do Azure, navegue até suas assinaturas.
  2. Selecione a assinatura em que você deseja ajustar as permissões de RBAC.
  3. Selecione Controle de Acesso (IAM) .
  4. Selecione Adicionar e, em seguida, Adicionar Atribuição de Função.
  5. Pesquise Colaborador de máquina virtual e realce a opção. Selecione Avançar.
  6. Clique em + Selecionar membros.
  7. Pesquise a função Provedor de Recursos da Frota do Azure.
  8. Selecione o Provedor de Recursos da Frota do Azure e selecione Revisar + Atribuir.
  9. Repita as etapas anteriores para a função Colaborador de Rede e a função Operador de Identidade Gerenciada.

Ao usar imagens armazenadas na Galeria de Computação durante a implantação da Frota de Computação, repita também as etapas anteriores para a função Administrador de Compartilhamento da Galeria de Computação.

Para saber mais sobre a atribuição de funções, confira Atribuir funções do Azure no portal do Azure.

Modelo de ARM

Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Os modelos do Resource Manager permitem implantar grupos de recursos relacionados. Em um único modelo, é possível criar o conjunto de dimensionamento de máquinas virtuais, instalar aplicativos e configurar regras de dimensionamento automático. Com o uso de variáveis e parâmetros, esse modelo pode ser reutilizado para atualizar conjuntos de dimensionamento existentes ou criar conjuntos de dimensionamento adicionais. Você pode implantar modelos por meio do portal do Azure, do Azure CLI ou do Azure PowerShell ou de pipelines de integração contínua / entrega contínua (CI / CD).

Examinar o modelo

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "fleetName": {
            "type": "string",
            "metadata": {
                "description": "String used as a base for naming resources. Must be 3-61 characters in length and globally unique across Azure. A hash is prepended to this string for some resources, and resource-specific information is appended."
            }
        },
        "adminUsername": {
            "type": "string",
            "defaultValue": "testusername",
            "metadata": {
                "description": "Admin username on all VMs."
            }
        },
        "adminPassword": {
            "type": "string",
            "metadata": {
                "description": "Admin password on all VMs."
            }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Location for all resources."
            }
        }
    },
    "variables": {
        "vnName": "[format('{0}-vnet', parameters('fleetName'))]",
        "lbName": "[format('{0}-lb', parameters('fleetName'))]",
        "imageReference": {
            "publisher": "MicrosoftWindowsServer",
            "offer": "WindowsServer",
            "sku": "2019-DataCenter-GS",
            "version": "latest"
        }
    },
    "resources": [
        {
            "type": "Microsoft.Network/virtualNetworks",
            "apiVersion": "2022-07-01",
            "name": "[variables('vnName')]",
            "location": "[parameters('location')]",
            "properties": {
                "addressSpace": {
                    "addressPrefixes": [
                        "10.0.0.0/16"
                    ]
                },
                "subnets": [
                    {
                        "name": "default",
                        "properties": {
                            "addressPrefix": "10.0.0.0/24"
                        }
                    }
                ]
            }
        },
        {
            "type": "Microsoft.Network/loadBalancers",
            "apiVersion": "2022-07-01",
            "name": "[variables('lbName')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "Standard"
            },
            "properties": {
                "frontendIPConfigurations": [
                    {
                        "name": "[variables('lbName')]",
                        "properties": {
                            "privateIPAddress": "10.0.0.4",
                            "privateIPAllocationMethod": "Dynamic",
                            "subnet": {
                                "id": "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('vnName'))).subnets[0].id]"
                            }
                        }
                    }
                ],
                "backendAddressPools": [
                    {
                        "name": "[variables('lbName')]"
                    }
                ]
            },
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', variables('vnName'))]"
            ]
        },
        {
            "type": "Microsoft.AzureFleet/fleets",
            "apiVersion": "2024-05-01-Preview",
            "name": "[toLower(parameters('fleetName'))]",
            "location": "[parameters('location')]",
            "properties": {
                "vmSizesProfile": [
                    {
                        "name": "Standard_F2s_v2"
                    },
                    {
                        "name": "Standard_DS1_v2"
                    },
                    {
                        "name": "Standard_DS2_v2"
                    }
                ],
                "spotPriorityProfile": {
                    "capacity": 10,
                    "evictionPolicy": "Delete",
                    "allocationStrategy": "CapacityOptimized",
                    "maintain": false
                },
                "regularPriorityProfile": {
                    "capacity": 50,
                    "minCapacity": 30,
                    "allocationStrategy": "LowestPrice"
                },
                "computeProfile": {
                    "platformFaultDomainCount": 1,
                    "computeApiVersion": "2024-03-01",
                    "baseVirtualMachineProfile": {
                        "storageProfile": {
                            "osDisk": {
                                "osType": "Windows",
                                "createOption": "fromImage",
                                "caching": "ReadWrite",
                                "managedDisk": {
                                    "storageAccountType": "Standard_LRS"
                                }
                            },
                            "imageReference": "[variables('imageReference')]"
                        },
                        "osProfile": {
                            "computerNamePrefix": "[parameters('fleetName')]",
                            "adminUsername": "[parameters('adminUsername')]",
                            "adminPassword": "[parameters('adminPassword')]"
                        },
                        "networkProfile": {
                            "networkApiVersion": "2022-07-01",
                            "networkInterfaceConfigurations": [
                                {
                                    "name": "[variables('vnName')]",
                                    "properties": {
                                        "primary": true,
                                        "enableIPForwarding": true,
                                        "enableAcceleratedNetworking": false,
                                        "ipConfigurations": [
                                            {
                                                "name": "[variables('vnName')]",
                                                "properties": {
                                                    "subnet": {
                                                        "id": "[reference(resourceId('Microsoft.Network/virtualNetworks', variables('vnName'))).subnets[0].id]"
                                                    },
                                                    "primary": true,
                                                    "applicationGatewayBackendAddressPools": [],
                                                    "loadBalancerBackendAddressPools": [
                                                        {
                                                            "id": "[format('{0}/backendAddressPools/{1}', resourceId('Microsoft.Network/loadBalancers', variables('lbName')), variables('lbName'))]"
                                                        }
                                                    ]
                                                }
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    }
                }
            },
            "dependsOn": [
                "[resourceId('Microsoft.Network/virtualNetworks', variables('vnName'))]",
                "[resourceId('Microsoft.Network/loadBalancers', variables('lbName'))]"
            ]
        }
    ]
}

Esses recursos do Azure estão definidos no modelo:

Limpar os recursos

Quando não for mais necessário, use az group delete para remover o grupo de recursos, o conjunto de dimensionamento e todos os recursos relacionados, como demonstrado a seguir. O parâmetro --no-wait retorna o controle ao prompt sem aguardar a conclusão da operação. O parâmetro --yes confirma que você deseja excluir os recursos sem outro prompt para fazer isso.

az group delete --name myResourceGroup --yes --no-wait

Próximas etapas