Quantcast
Channel: Azure Virtual Machines forum
Viewing all articles
Browse latest Browse all 12545

How to create custom script extension on virtual machine scale set of linux using azure resource manager template?

$
0
0

Here is my template1.json which is used to create cluster with virtual machine scale set. I want to add extensions to it using the same arm template1. I tried including script of extensions in the properties section of managed clusters ( template2.json) but it is throwing error of parent resource vnetName not found.

I tried adding extensionProfile in the properties section of managed clusters but that also didn't work.

can anyone help me out how can I set custom script extension using same arm template?

template1.json

{"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {"vnetName": {"type": "string","metadata": {"description": "VNet name" } },"location": {"type": "string","defaultValue": "[resourceGroup().location]","metadata": {"description": "Azure resource location" } },"vnetAddressPrefix": {"type": "string","metadata": {"description": "Virtual network address range" } },"subnetName": {"type": "string","metadata": {"description": "Azure subnet Name" } },"subnetPrefix": {"type": "string","metadata": {"description": "Azure subnet prefix" } },"kubernetesVersion": {"type": "string","metadata": {"description": "kubernetesVersion" } },"enableRBAC": {"defaultValue": false,"type": "bool","metadata": {"description": "boolean flag to turn on and off of RBAC" } },"dnsPrefix": {"type": "string","metadata": {"description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." } },"enableHttpApplicationRouting": {"defaultValue": false,"type": "bool","metadata": {"description": "boolean flag to turn on and off of http application routing" } },"osDiskSizeGB": {"defaultValue": 0,"minValue": 0,"maxValue": 1023,"type": "int","metadata": {"description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize." } },"agentCount": {"minValue": 1,"maxValue": 50,"type": "int","metadata": {"description": "The number of agent nodes for the cluster. Production workloads have a recommended minimum of 3." } },"agentVMSize": {"type": "string","metadata": {"description": "The size of the Virtual Machine." } },"masterCount": {"type": "int","allowedValues": [ 1 ],"metadata": {"description": "The number of Kubernetes masters for the cluster." } },"adminUsername": {"type": "string","defaultValue": "azureuser","metadata": {"description": "User name for the Linux Virtual Machines." } },"osType": {"defaultValue": "Linux","allowedValues": ["Linux" ],"type": "string","metadata": {"description": "The type of operating system." } },"maxPods": {"defaultValue": 30,"type": "int","metadata": {"description": "Maximum number of pods that can run on a node." } },"ServicePrincipalClientId": {"type": "string","metadata": {"description": "ServicePrincipalClientId" } },"ServicePrincipalClientSecret": {"type": "string","metadata": {"description": "ServicePrincipalClientId" } },"ServicePrincipalObjectId": {"type": "string","metadata": {"description": "ServicePrincipalClientId" } },"sshRSAPublicKey": {"type": "securestring","metadata": {"description": "Configure all linux machines with the SSH RSA public key string" } },"networkPlugin": {"allowedValues": ["azure","kubenet" ],"defaultValue": "kubenet","type": "string","metadata": {"description": "Network plugin used for building Kubernetes network." } },"dockerBridgeCidr": {"type": "string","metadata": {"description": "A CIDR notation IP for Docker bridge." } },"dnsServiceIP": {"type": "string","metadata": {"description": "Containers DNS server IP address." } },"serviceCidr": {"type": "string","metadata": {"description": "A CIDR notation IP range from which to assign service cluster IPs." } },"resourceGroup": {"type": "string","defaultValue": "[resourceGroup().name]","metadata": {"description": "Azure resource group." } },"autoscalingEnabled": {"type": "bool","defaultValue": true,"metadata": {"description": "Flag to enable autoscaling." } },"nodesMinimum": {"type": "int","defaultValue": 2,"metadata": {"description": "Minimum number of nodes for autoscaling." } },"nodesMaximum": {"type": "int","defaultValue": 4,"metadata": {"description": "Maximum number of nodes for autoscaling." } } },"variables": {"mastersEndpointDNSNamePrefix":"[concat(parameters('dnsPrefix'),'mgmt')]" },"resources": [ {"type": "Microsoft.Resources/deployments","apiVersion": "2019-08-01","name": "nestedTemplate","properties": {"mode": "Incremental","template": {"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","resources": [ {"apiVersion": "2019-06-01","type": "Microsoft.Network/virtualNetworks","name": "[parameters('vnetName')]","location": "[parameters('location')]","properties": {"addressSpace": {"addressPrefixes": ["[parameters('vnetAddressPrefix')]" ] },"subnets": [ {"name": "[parameters('subnetName')]","properties": {"addressPrefix": "[parameters('subnetPrefix')]" } } ] } }, {"type": "Microsoft.ContainerService/managedClusters","name":"[concat('Kluster-',resourceGroup().name)]","apiVersion": "2019-08-01","location": "[parameters('location')]","tags": {},"dependsOn": ["[concat('Microsoft.Resources/deployments/', 'ClusterSubnetRoleAssignmentDeployment')]" ],"properties": {"kubernetesVersion": "[parameters('kubernetesVersion')]","enableRBAC": "[parameters('enableRBAC')]","dnsPrefix": "[parameters('dnsPrefix')]","addonProfiles": {"httpApplicationRouting": {"enabled": "[parameters('enableHttpApplicationRouting')]" } },"masterProfile": {"count": "[parameters('masterCount')]","vmSize": "[parameters('agentVMSize')]","dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]" },"agentPoolProfiles": [ {"name": "agentpool","osDiskSizeGB": "[parameters('osDiskSizeGB')]","count": "[parameters('agentCount')]","vmSize": "[parameters('agentVMSize')]","osType": "[parameters('osType')]","storageProfile": "ManagedDisks","vnetSubnetID": "[concat(resourceGroup().id,'/providers/Microsoft.Network/virtualNetworks/',parameters('vnetName'),'/subnets/',parameters('subnetName'))]","maxPods": "[parameters('maxPods')]","enableAutoScaling": "[parameters('autoscalingEnabled')]","minCount": "[parameters('nodesMinimum')]","maxCount": "[parameters('nodesMaximum')]","type": "VirtualMachineScaleSets" } ],"linuxProfile": {"adminUsername": "[parameters('adminUsername')]","ssh": {"publicKeys": [ { "keyData": "[parameters('sshRSAPublicKey')]" } ] } },"servicePrincipalProfile": {"clientId": "[parameters('ServicePrincipalClientId')]","secret": "[parameters('ServicePrincipalClientSecret')]" },"networkProfile": {"networkPlugin": "[parameters('networkPlugin')]","serviceCidr": "[parameters('serviceCidr')]","dnsServiceIP": "[parameters('dnsServiceIP')]","dockerBridgeCidr": "[parameters('dockerBridgeCidr')]" } } }, {"type": "Microsoft.Resources/deployments","name": "ClusterSubnetRoleAssignmentDeployment","apiVersion": "2019-08-01","subscriptionId": "[subscription().subscriptionId]","resourceGroup": "[parameters('resourceGroup')]","dependsOn": ["[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" ],"properties": {"mode": "Incremental","template": {"$schema": "https://schema.management.azure.com/schemas/2018-05-01/deploymentTemplate.json#","contentVersion": "1.0.0.0","parameters": {},"variables": {},"resources": [ {"type": "Microsoft.Network/virtualNetworks/subnets/providers/roleAssignments","apiVersion": "2019-04-01-preview","name": "[concat(parameters('vnetName'), '/', parameters('subnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name))]","properties": {"roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '4d97b98b-1d4f-4787-a291-c67834d212e7')]","principalId": "[parameters('ServicePrincipalObjectId')]","scope": "[concat(resourceGroup().id,'/providers/Microsoft.Network/virtualNetworks/',parameters('vnetName'),'/subnets/',parameters('subnetName'))]" } } ] } } } ] } } } ] }

template2.json

                                                                                                 

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vnetName": {
            "type": "string",
            "metadata": {
                "description": "VNet name"
              }
        },
        "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
                "description": "Azure resource location"
              }
        },
        "vnetAddressPrefix": {
            "type": "string",
            "metadata": {
                "description": "Virtual network address range"
              }
        },
        "subnetName": {
            "type": "string",
            "metadata": {
                "description": "Azure subnet Name"
            }
        },
        "subnetPrefix": {
            "type": "string",
            "metadata": {
                "description": "Azure subnet prefix"
            }
        },
        "kubernetesVersion": {
            "type": "string",
            "metadata": {
                "description": "kubernetesVersion"
            }
        },
        "enableRBAC": {
            "defaultValue": false,
            "type": "bool",
            "metadata": {
                "description": "boolean flag to turn on and off of RBAC"
            }
        },
        "dnsPrefix": {
            "type": "string",
            "metadata": {
                "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN."
            }
        },
        "enableHttpApplicationRouting": {
            "defaultValue": false,
            "type": "bool",
            "metadata": {
                "description": "boolean flag to turn on and off of http application routing"
            }
        },
        "osDiskSizeGB": {
            "defaultValue": 0,
            "minValue": 0,
            "maxValue": 1023,
            "type": "int",
            "metadata": {
                "description": "Disk size (in GB) to provision for each of the agent pool nodes. This value ranges from 0 to 1023. Specifying 0 will apply the default disk size for that agentVMSize."
            }
        },
        "agentCount": {
            "minValue": 1,
            "maxValue": 50,
            "type": "int",
            "metadata": {
                "description": "The number of agent nodes for the cluster. Production workloads have a recommended minimum of 3."
            }
        },
        "agentVMSize": {
            "type": "string",
            "metadata": {
                "description": "The size of the Virtual Machine."
            }
        },
        "masterCount": {
            "type": "int",
            "allowedValues": [
              1
            ],
            "metadata": {
              "description": "The number of Kubernetes masters for the cluster."
            }
        },
        "adminUsername": {
            "type": "string",
            "defaultValue": "azureuser",
            "metadata": {
               "description": "User name for the Linux Virtual Machines."
            }
        },
        "osType": {
            "defaultValue": "Linux",
            "allowedValues": [
                "Linux"
            ],
            "type": "string",
            "metadata": {
                "description": "The type of operating system."
            }
        },
        "maxPods": {
            "defaultValue": 30,
            "type": "int",
            "metadata": {
                "description": "Maximum number of pods that can run on a node."
            }
        },
        "ServicePrincipalClientId": {
            "type": "string",
            "metadata": {
                "description": "ServicePrincipalClientId"
            }
        },
        "ServicePrincipalClientSecret": {
            "type": "string",
            "metadata": {
                "description": "ServicePrincipalClientId"
            }
        },
        "ServicePrincipalObjectId": {
            "type": "string",
            "metadata": {
                "description": "ServicePrincipalClientId"
            }
        },
        "sshRSAPublicKey": {
            "type": "securestring",
            "metadata": {
               "description": "Configure all linux machines with the SSH RSA public key string"
            }
        },
        "networkPlugin": {
            "allowedValues": [
                "azure",
                "kubenet"
            ],
            "defaultValue": "kubenet",
            "type": "string",
            "metadata": {
                "description": "Network plugin used for building Kubernetes network."
            }
        },
        "dockerBridgeCidr": {
            "type": "string",
            "metadata": {
                "description": "A CIDR notation IP for Docker bridge."
            }
        },
        "dnsServiceIP": {
            "type": "string",
            "metadata": {
                "description": "Containers DNS server IP address."
            }
        },
        "serviceCidr": {
            "type": "string",
            "metadata": {
                "description": "A CIDR notation IP range from which to assign service cluster IPs."
            }
        },
        "resourceGroup": {
            "type": "string",
            "defaultValue": "[resourceGroup().name]",
            "metadata": {
                "description": "Azure resource group."
            }
        },
       "autoscalingEnabled": {
            "type": "bool",
            "defaultValue": true,
            "metadata": {
                "description": "Flag to enable autoscaling."
            }
        },
       "nodesMinimum": {
            "type": "int",
            "defaultValue": 2,
            "metadata": {
                "description": "Minimum number of nodes for autoscaling."
            }
        },
      "nodesMaximum": {
            "type": "int",
            "defaultValue": 4,
            "metadata": {
                "description": "Maximum number of nodes for autoscaling."
            }
        }
    },
    "variables": {
"mastersEndpointDNSNamePrefix":"[concat(parameters('dnsPrefix'),'mgmt')]",
        "vmssName":"aks-agentpool-43678249-vmss"
    },
    "resources": [
           {
            "type": "Microsoft.Resources/deployments",
            "apiVersion": "2019-08-01",
            "name": "nestedTemplate",
            "properties": {
              "mode": "Incremental",
              "template": {
                "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                "contentVersion": "1.0.0.0",
                "resources": [
                    {
                        "apiVersion": "2019-06-01",
                        "type": "Microsoft.Network/virtualNetworks",
                        "name": "[parameters('vnetName')]",
                        "location": "[parameters('location')]",
                        "properties": {
                            "addressSpace": {
                                "addressPrefixes": [
                                    "[parameters('vnetAddressPrefix')]"
                                ]
                            },
                            "subnets": [
                                {
                                    "name": "[parameters('subnetName')]",
                                    "properties": {
                                        "addressPrefix": "[parameters('subnetPrefix')]"
                                    }
                                }
                            ]
                        }
                   },
                   {
                        "type": "Microsoft.ContainerService/managedClusters",
                        "name":"[concat('Kluster-',resourceGroup().name)]",
                        "apiVersion": "2019-08-01",
                        "location": "[parameters('location')]",
                        "tags": {},
                        "dependsOn": [
                            "[concat('Microsoft.Resources/deployments/', 'ClusterSubnetRoleAssignmentDeployment')]"
                        ],
                        "properties": {
                            "kubernetesVersion": "[parameters('kubernetesVersion')]",
                            "enableRBAC": "[parameters('enableRBAC')]",
                            "dnsPrefix": "[parameters('dnsPrefix')]",
                            "addonProfiles": {
                                "httpApplicationRouting": {
                                    "enabled": "[parameters('enableHttpApplicationRouting')]"
                                }
                            },
    "masterProfile": {
"count": "[parameters('masterCount')]",
"vmSize": "[parameters('agentVMSize')]",
"dnsPrefix": "[variables('mastersEndpointDNSNamePrefix')]"
            },
                            "agentPoolProfiles": [
                                {
                                    "name": "agentpool",
                                    "osDiskSizeGB": "[parameters('osDiskSizeGB')]",
                                    "count": "[parameters('agentCount')]",
                                    "vmSize": "[parameters('agentVMSize')]",
                                    "osType": "[parameters('osType')]",
                                    "storageProfile": "ManagedDisks",
                                    "vnetSubnetID": "[concat(resourceGroup().id,'/providers/Microsoft.Network/virtualNetworks/',parameters('vnetName'),'/subnets/',parameters('subnetName'))]",
                                    "maxPods": "[parameters('maxPods')]",
                                    "enableAutoScaling": "[parameters('autoscalingEnabled')]",
                                    "minCount": "[parameters('nodesMinimum')]",
                                    "maxCount": "[parameters('nodesMaximum')]",
                                    "type": "virtualMachineScaleSets"
                                }
                            ],
    "linuxProfile": {
    "adminUsername": "[parameters('adminUsername')]",
    "ssh": {
              "publicKeys": [
{
                  "keyData": "[parameters('sshRSAPublicKey')]"
}
      ]
            }
    },
                            "servicePrincipalProfile": {
                                "clientId": "[parameters('ServicePrincipalClientId')]",
                                "secret": "[parameters('ServicePrincipalClientSecret')]"
                            },
                            "networkProfile": {
                                "networkPlugin": "[parameters('networkPlugin')]",
                                "serviceCidr": "[parameters('serviceCidr')]",
                                "dnsServiceIP": "[parameters('dnsServiceIP')]",
                                "dockerBridgeCidr": "[parameters('dockerBridgeCidr')]"
                            }
                        },
                        "resources": [
                         {
                           "apiVersion": "2019-03-01",
                           "type": "Microsoft.Compute/virtualMachines/extensions",
                           "name": "[concat('aks-agentpool-43678249-vmss','/', 'Extensions')]",
                           "location": "[parameters('location')]",
                           "dependsOn": [

                               "[concat('Microsoft.ContainerService/managedClusters/', concat('Kluster-',resourceGroup().name))]"
                            ],
                           "properties": {
                               "publisher": "Microsoft.Azure.Extensions",
                               "type": "CustomScript",
                               "typeHandlerVersion": "2.0",
                               "autoUpgradeMinorVersion":true,
                               "settings": {
                                   "skipDos2Unix":false,
                                   "fileUris": ["publicfilelink"],
                                   "commandToExecute": "./filename.sh"
                            }
                          }
                        }
                      ]
                    },
                    {
                        "type": "Microsoft.Resources/deployments",
                        "name": "ClusterSubnetRoleAssignmentDeployment",
                        "apiVersion": "2019-08-01",
                        "subscriptionId": "[subscription().subscriptionId]",
                        "resourceGroup": "[parameters('resourceGroup')]",
                        "dependsOn": [
                            "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]"
                        ],
                        "properties": {
                            "mode": "Incremental",
                            "template": {
                                "$schema": "https://schema.management.azure.com/schemas/2018-05-01/deploymentTemplate.json#",
                                "contentVersion": "1.0.0.0",
                                "parameters": {},
                                "variables": {},
                                "resources": [
                                    {
                                        "type": "Microsoft.Network/virtualNetworks/subnets/providers/roleAssignments",
                                        "apiVersion": "2019-04-01-preview",
                                        "name": "[concat(parameters('vnetName'), '/', parameters('subnetName'), '/Microsoft.Authorization/', guid(resourceGroup().id, deployment().name))]",
                                        "properties": {
                                            "roleDefinitionId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '4d97b98b-1d4f-4787-a291-c67834d212e7')]",
                                            "principalId": "[parameters('ServicePrincipalObjectId')]",
                                            "scope": "[concat(resourceGroup().id,'/providers/Microsoft.Network/virtualNetworks/',parameters('vnetName'),'/subnets/',parameters('subnetName'))]"
                                        }
                                    }
                                ]
                            }
                        }
                    }
                ]
              }
            }
        }

    ]
}

Error thrown:


Viewing all articles
Browse latest Browse all 12545

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>