Azure VM规模集中的部署代理

时间:2018-11-29 09:21:12

标签: azure azure-devops azure-virtual-machine continuous-deployment azure-vm-scale-set

我目前正在使用ARM模板部署VM规模集(VMSS),该模板在VMSS内具有资源以安装Azure DevOps(ADO)部署代理的Azure扩展。所有组件均已成功部署,并且一个节点已在ADO中注册,其所有详细信息均与ARM模板相同。但是,问题在于它仅在第一个节点上安装代理,并且(据我所知)忽略了其余节点。在创建比例尺集以及自动缩放比例的过程中,我已经使用多个节点对此进行了测试。两种情况都只会导致第一个代理注册。 这是我正在使用的代码布局(我在这里删除了VMSS位以减少模板的长度,其中当然包括操作系统,存储和网络设置):

{
  "type": "Microsoft.Compute/virtualMachineScaleSets",
  "name": "[parameters('VMSSName')]",
  "apiVersion": "2018-10-01",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('VMSSSize')]",
    "capacity": "[parameters('VMSSCount')]",
    "tier": "Standard"
  },
  "dependsOn": [],
  "properties": {
    "overprovision": "[variables('overProvision')]",
    "upgradePolicy": {
      "mode": "Automatic"
    },
    "virtualMachineProfile": {},
      "storageProfile": {},
      "networkProfile": {},
      "extensionProfile": {
        "extensions": [
          {
            "type": "Microsoft.Compute/virtualMachineScaleSets/extensions",
            "name": "VMSS-NetworkWatcher",
            "location": "[resourceGroup().location]",
            "properties": {
              "publisher": "Microsoft.Azure.NetworkWatcher",
              "type": "[if(equals(parameters('Platform'), 'Windows'), 'NetworkWatcherAgentWindows', 'NetworkWatcherAgentLinux')]",
              "typeHandlerVersion": "1.4",
              "autoUpgradeMinorVersion": true
            }
          },
          {
            "type": "Microsoft.Compute/virtualMachineScaleSets/extensions",
            "name": "VMSS-TeamServicesAgent",
            "location": "[resourceGroup().location]",
            "properties": {
              "publisher": "Microsoft.VisualStudio.Services",
              "type": "[if(equals(parameters('Platform'), 'Windows'), 'TeamServicesAgent', 'TeamServicesAgentLinux')]",
              "typeHandlerVersion": "1.0",
              "autoUpgradeMinorVersion": true,
              "settings": {
                "VSTSAccountName": "[parameters('VSTSAccountName')]",
                "TeamProject": "[parameters('VSTSTeamProjectName')]",
                "DeploymentGroup": "[parameters('VSTSDeploymentGroupName')]",
                "AgentName": "[concat(parameters('VMSSName'),'-DG')]",
                "Tags": "[parameters('VSTSDeploymentAgentTags')]"
              },
              "protectedSettings": {
                "PATToken": "[parameters('VSTSPATToken')]"
              }
            }
          }
        ]
      }
    }
  }
}

当然,现在所需的状态是所有节点都将安装代理,以便我可以在Release管道内使用Deployment Group。

1 个答案:

答案 0 :(得分:0)

您的问题在于所有代理都具有相同的AgentName,因此它有效地覆盖了代理并且仅覆盖了最新的一个“生存对象”。我认为您无法做任何事情,除非您只是修改AgentName并根据计算机名称自动分配。

您可以将其转换为script \ dsc扩展名,从而可以即时计算所有内容。