获取Azure VM规模集中VM扩展中的节点索引

获取Azure VM规模集中VM扩展中的节点索引,azure,Azure,在Azure VM规模集的Azure资源管理器模板中,可以使用extensionProfile属性配置VM扩展 "extensionProfile": { "extensions": [ { "name": "DockerExtension", "properties": { "publisher": "Microsoft.Azure.Extension

在Azure VM规模集的Azure资源管理器模板中,可以使用extensionProfile属性配置VM扩展

 "extensionProfile": {
                "extensions": [
                 {
            "name": "DockerExtension",
            "properties": {
              "publisher": "Microsoft.Azure.Extensions",
              "type": "DockerExtension",
              "typeHandlerVersion": "1.0",
              "settings": {
                "compose": {
                  "consul": {
                    "image": "progrium/consul",
                    "command": "[concat('-server -node master', copyIndex(), ' ', variables('consulServerArgs')[copyIndex()])]"                       
                  },

                }
              }
            }
          }
                ]    
    }
是否有任何模板函数允许获取应用扩展的节点的resourceid或节点号?类似于手动循环并使用copyIndex()函数


基本上,我需要在docker extension的命令中获取节点的本地ip地址。

您可以使用ARM模板的reference关键字

它看起来像:

[reference(variables('nicName')).ipConfigurations[0].properties.privateIPAddress]

有关用法示例,请参见此模板:

没有资源循环类型构造,用于将扩展以不同方式应用于VM规模集资源中的不同VM

您是否可以将负载平衡器添加到缩放集,并定义将IPAddr:frontendport+x映射到VMS/VMx:backendport的NAT规则


节点可以获得自己的IP地址,因此,在节点上运行的脚本中,或者在将其IP地址报告到主节点可以拾取的位置的节点中,是否有任何解决方法?

问题是nic是作为VM规模集的一部分创建的,并且没有直接的引用?您确定您的示例适用于azure VM规模集吗?语法可能不精确,但应该类似。关键是您使用的是reference关键字。此外,docker扩展还应取决于VM规模集。如果您遇到问题,请使用resources.azure.com查找您在资源上查找的确切属性。抱歉,您的错误。刚刚从vm scaleset团队得到确认,不可能在vmscaleset extensionProfile中获取对vm nic的引用。我正在探索在部署atm后使用rest API将docker扩展安装到vmscale set vm的选项。我可以使用rest API获取scaleset中的虚拟机列表,以及它们的网络接口,只需确定vmscaleset虚拟机在添加扩展时是否与普通虚拟机具有相同的rest API即可。对于scaleset,/*vms*/name/vms*/isntanceid/extensions/不起作用。将使用自定义脚本对abit进行实验。您可以在部署扩展后将其部署到VM扩展集中,并应用于扩展集中具有相同配置的所有VM。但是,在VMs部署期间或之后,无法使用不同的每VM设置将扩展部署到scale集中的单个VM。我在api中未找到任何与扩展相关的内容。你是说我可以用手臂模板来做,对吗?对。API中没有特定于扩展的内容。这是在部署上执行PUT或修补程序的情况,其中包括扩展属性。