Share via


Saiba mais sobre os modelos do Conjunto de Dimensionamento de Máquinas Virtuais

Os modelos do Azure Resource Manager são uma ótima maneira de implementar grupos de recursos relacionados. Esta série de tutoriais mostra como criar um modelo de conjunto de dimensionamento básico e como modificar este modelo de acordo com vários cenários. Todos os exemplos são provenientes deste repositório do GitHub.

Este modelo destina-se a ser simples. Para obter exemplos mais completos de modelos de conjuntos de dimensionamento, veja o repositório do GitHub Modelos de Início Rápido do Azure e procure pastas que contenham a cadeia vmss.

Se já estiver familiarizado com a criação de modelos, pode avançar para a secção "Passos seguintes" para ver como modificar este modelo.

Definir $schema e contentVersion

Primeiro, defina $schema e contentVersion no modelo. O $schema elemento define a versão da linguagem de modelo e é utilizado para realce de sintaxe do Visual Studio e funcionalidades de validação semelhantes. O contentVersion elemento não é utilizado pelo Azure. Em vez disso, ajuda-o a controlar a versão do modelo.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
  "contentVersion": "1.0.0.0",
}

Definir parâmetros

Em seguida, defina dois parâmetros adminUsername e adminPassword. Os parâmetros são valores que especificar no momento da implementação. O adminUsername parâmetro é simplesmente um string tipo, mas como adminPassword é um segredo, dê-lhe o tipo securestring. Posteriormente, estes parâmetros são transmitidos para a configuração do conjunto de dimensionamento.

  "parameters": {
    "adminUsername": {
      "type": "string"
    },
    "adminPassword": {
      "type": "securestring"
    }
  },

Definir variáveis

Resource Manager modelos também lhe permitem definir variáveis para serem utilizadas mais tarde no modelo. O exemplo não utiliza variáveis, pelo que o objeto JSON está vazio.

  "variables": {},

Definir recursos

Segue-se a secção recursos do modelo. Aqui, pode definir o que realmente pretende implementar. Ao contrário parameters de e variables (que são objetos JSON), resources é uma lista JSON de objetos JSON.

  "resources": [
    ...
  ]

Todos os recursos requerem typeas propriedades , name, apiVersione location . O primeiro recurso deste exemplo tem o tipo Microsoft.Network/virtualNetwork, name myVnete apiVersion 2018-11-01. (Para encontrar a versão mais recente da API para um tipo de recurso, veja a referência de modelo do Azure Resource Manager.)

{
  "type": "Microsoft.Network/virtualNetworks",
  "name": "myVnet",
  "apiVersion": "2018-11-01",
}

Especificar localização

Para especificar a localização da rede virtual, utilize uma função de modelo Resource Manager. Esta função tem de estar entre aspas e parênteses retos como: "[<template-function>]". Neste caso, utilize a resourceGroup função . Não aceita argumentos e devolve um objeto JSON com metadados sobre o grupo de recursos no qual esta implementação está a ser implementada. O grupo de recursos é definido pelo utilizador no momento da implementação. Em seguida, este valor é indexado neste objeto JSON com .location para obter a localização do objeto JSON.

  "location": "[resourceGroup().location]",

Especificar propriedades de rede virtual

Cada recurso Resource Manager tem a sua própria properties secção para configurações específicas do recurso. Neste caso, especifique que a rede virtual deve ter uma sub-rede com o intervalo 10.0.0.0/16de endereços IP privados . Um conjunto de dimensionamento está sempre contido numa sub-rede. Não pode abranger sub-redes.

  {
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      },
      "subnets": [
        {
          "name": "mySubnet",
          "properties": {
            "addressPrefix": "10.0.0.0/16"
          }
        }
      ]
    }
  },

Adicionar lista dependsOn

Além das propriedades necessárias type, name, apiVersione location , cada recurso pode ter uma lista opcional dependsOn de cadeias. Esta lista especifica que outros recursos desta implementação têm de ser concluídos antes de implementar este recurso.

Neste caso, existe apenas um elemento na lista, a rede virtual do exemplo anterior. Especifique esta dependência porque o conjunto de dimensionamento precisa que a rede exista antes de criar VMs. Desta forma, o conjunto de dimensionamento pode fornecer a estas VMs endereços IP privados do intervalo de endereços IP especificado anteriormente nas propriedades de rede. O formato de cada cadeia na lista dependsOn é <type>/<name>. Utilize o mesmo type e name utilizado anteriormente na definição de recurso de rede virtual.

  {
    "type": "Microsoft.Compute/virtualMachineScaleSets",
    "name": "myScaleSet",
    "apiVersion": "2019-03-01",
    "location": "[resourceGroup().location]",
    "dependsOn": [
      "Microsoft.Network/virtualNetworks/myVnet"
    ],
    ...
  }

Especificar propriedades do conjunto de dimensionamento

Os conjuntos de dimensionamento têm muitas propriedades para personalizar as VMs no conjunto de dimensionamento. Para obter uma lista completa destas propriedades, veja a referência do modelo. Neste tutorial, são definidas apenas algumas propriedades frequentemente utilizadas.

Fornecer o tamanho e a capacidade da VM

O conjunto de dimensionamento precisa de saber qual o tamanho da VM a criar ("nome do sku") e quantas dessas VMs deve criar ("capacidade de sku"). Para ver que tamanhos de VM estão disponíveis, veja a documentação Tamanhos de VM.

  "sku": {
    "name": "Standard_A1",
    "capacity": 2
  },

Escolher o tipo de atualizações

O conjunto de dimensionamento também precisa de saber como lidar com atualizações no conjunto de dimensionamento. Atualmente, existem três opções, Manual, Rolling e Automatic. Para obter mais informações sobre as diferenças entre os dois, veja a documentação sobre como atualizar um conjunto de dimensionamento.

  "properties": {
    "upgradePolicy": {
      "mode": "Manual"
    },
  }

Escolher o sistema operativo da VM

O conjunto de dimensionamento precisa de saber que sistema operativo colocar nas VMs. Aqui, crie as VMs com uma imagem do Ubuntu 16.04-LTS totalmente corrigida.

  "virtualMachineProfile": {
    "storageProfile": {
      "imageReference": {
        "publisher": "Canonical",
        "offer": "UbuntuServer",
        "sku": "16.04-LTS",
        "version": "latest"
      }
    },
  }

Especificar computerNamePrefix

O conjunto de dimensionamento implementa várias VMs. Em vez de especificar cada nome de VM, especifique computerNamePrefix. O conjunto de dimensionamento acrescenta um índice ao prefixo de cada VM, para que os nomes das VMs tenham o formulário <computerNamePrefix>_<auto-generated-index>.

No fragmento seguinte, utilize os parâmetros de antes para definir o nome de utilizador e a palavra-passe do administrador para todas as VMs no conjunto de dimensionamento. Este processo utiliza a parameters função de modelo. Esta função utiliza uma cadeia de carateres que especifica o parâmetro a referenciar e produz o valor desse parâmetro.

 "osProfile": {
   "computerNamePrefix": "vm",
   "adminUsername": "[parameters('adminUsername')]",
   "adminPassword": "[parameters('adminPassword')]"
  },

Especificar a configuração da rede VM

Por fim, especifique a configuração de rede para as VMs no conjunto de dimensionamento. Neste caso, só precisa de especificar o ID da sub-rede criada anteriormente. Isto indica ao conjunto de dimensionamento para colocar as interfaces de rede nesta sub-rede.

Pode obter o ID da rede virtual que contém a sub-rede com a função de resourceId modelo. Esta função utiliza o tipo e o nome de um recurso e devolve o identificador completamente qualificado desse recurso. Este ID tem o formulário: /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/<resourceProviderNamespace>/<resourceType>/<resourceName>

No entanto, o identificador da rede virtual não é suficiente. Indique a sub-rede específica na qual as VMs do conjunto de dimensionamento devem estar. Para tal, concatene /subnets/mySubnet para o ID da rede virtual. O resultado é o ID completamente qualificado da sub-rede. Efetue esta concatenação com a concat função , que recebe uma série de cadeias e devolve a concatenação.

  "networkProfile": {
    "networkInterfaceConfigurations": [
      {
        "name": "myNic",
        "properties": {
          "primary": "true",
          "ipConfigurations": [
            {
              "name": "myIpConfig",
              "properties": {
                "subnet": {
                  "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', 'myVnet'), '/subnets/mySubnet')]"
                }
              }
            }
          ]
        }
      }
    ]
  }

Passos seguintes

Pode seguir a documentação do Azure Resource Manager para implementar o modelo anterior.

Pode iniciar esta série de tutoriais a partir do artigo de modelo de conjunto de dimensionamento básico.

Pode ver como modificar o modelo de conjunto de dimensionamento básico para implementar o conjunto de dimensionamento numa rede virtual existente.

Pode ver como modificar o modelo de conjunto de dimensionamento básico para implementar o conjunto de dimensionamento com uma imagem personalizada.

Pode ver como modificar o modelo de conjunto de dimensionamento básico para implementar um conjunto de dimensionamento do Linux com o dimensionamento automático baseado no convidado.

Para obter mais informações sobre conjuntos de dimensionamento, consulte a página de descrição geral do conjunto de dimensionamento.