{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "spClientId": { "type": "string", "defaultValue": "b159ec9d-77b4-41b3-9823-d1df89e7a690", "metadata": { "description": "Service Principal Client ID used by Jenkins and Azure Container Service (AKS)." } }, "spClientSecret": { "type": "securestring", "defaultValue": "d3296b10-1668-47d1-b552-b57c10414db9", "metadata": { "description": "Service Principal Client Secret used by Jenkins and Azure Container Service(AKS)." } }, "linuxAdminUsername": { "type": "string", "defaultValue": "adilson", "metadata": { "description": "User name for the Linux Virtual Machines (Jenkins and Kubernetes)." } }, "linuxAdminPassword": { "type": "securestring", "defaultValue": "Password@123", "metadata": { "description": "Password for the Jenkins and Grafana Virtual Machines." } }, "linuxSSHPublicKey": { "type": "string", "defaultValue": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoEUZz4aVHWgUKmBttWjsBv9zdKFsNHYYVu/2jLsYkX+nfIy+onBx28D/okAwBBLC9M7f24XYmMskNo2q6itDAA8hH42S4HiJLZWDH4oeXg6fb08KUd3cOV8Xh9DzrRilbtGv4uLTInOKGWQqOGuxqYemzdFBW2CJ2n5lPJvLd4SxP290hXzRQkSOpdv1eB/T8WcdOp3mcbYILBZihEFHAPzC+80NLr+JQW7KLbNveELMoz45b6LfZzW1UeMXa1k1+vXg340RNzZR0DIjGo8+WKbektKTQ9WOrXjSxOS/OKxo4JJWVonrIWdf/3BEz+Kp8jKR8ef2Rto+LFP32L2Pf adilsoncesar@Adilsons-MacBook-Pro.local", "metadata": { "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH azureuser@linuxvm'" } }, "cosmosDbName": { "type": "string", "defaultValue": "acscosmosdb", "metadata": { "description": "Name of the CosmosDB." } }, "acrName": { "type": "string", "defaultValue": "acsimages", "metadata": { "description": "Name of the Azure Container Registery. The name may contain alpha numeric characters only and must be between 5 and 50 characters." } }, "jenkinsDnsPrefix": { "type": "string", "defaultValue": "acsjenkins", "metadata": { "description": "Unique DNS Name for the Public IP used to access the Jenkins Virtual Machine." } }, "grafanaDnsPrefix": { "type": "string", "defaultValue": "acsgrafana", "metadata": { "description": "Unique DNS Name for the Public IP used to access the Grafana Virtual Machine." } }, "kubernetesDnsPrefix": { "type": "string", "defaultValue": "acsv2kube", "metadata": { "description": "Optional DNS prefix to use with hosted Kubernetes API server FQDN." } }, "kubernetesClusterName": { "type": "string", "defaultValue": "acsv2kubecluster", "metadata": { "description": "The name of the Managed Cluster resource." } }, "kubernetesAgentCount": { "type": "int", "defaultValue": 1, "metadata": { "description": "The number of nodes for the cluster." }, "minValue": 1, "maxValue": 50 }, "kubernetesAgentVMSize": { "type": "string", "defaultValue": "Standard_D2_v2", "allowedValues": [ "Standard_A10", "Standard_A11", "Standard_A2", "Standard_A2_v2", "Standard_A2m_v2", "Standard_A3", "Standard_A4", "Standard_A4_v2", "Standard_A4m_v2", "Standard_A5", "Standard_A6", "Standard_A7", "Standard_A8", "Standard_A8_v2", "Standard_A8m_v2", "Standard_A9", "Standard_D1_v2", "Standard_D11", "Standard_D11_v2", "Standard_D12", "Standard_D12_v2", "Standard_D13", "Standard_D13_v2", "Standard_D14", "Standard_D14_v2", "Standard_D15_v2", "Standard_D2", "Standard_D2_v2", "Standard_D3", "Standard_D3_v2", "Standard_D4", "Standard_D4_v2", "Standard_D5_v2", "Standard_DS11", "Standard_DS11_v2", "Standard_DS12", "Standard_DS12_v2", "Standard_DS13", "Standard_DS13_v2", "Standard_DS14", "Standard_DS14_v2", "Standard_DS15_v2", "Standard_DS2", "Standard_DS2_v2", "Standard_DS3", "Standard_DS3_v2", "Standard_DS4", "Standard_DS4_v2", "Standard_DS5_v2", "Standard_F16", "Standard_F16s", "Standard_F2", "Standard_F2s", "Standard_F4", "Standard_F4s", "Standard_F8", "Standard_F8s", "Standard_G1", "Standard_G2" ], "metadata": { "description": "The size of the Virtual Machine." } }, "kubernetesVersion": { "type": "string", "defaultValue": "1.11.5", "allowedValues": [ "1.11.5", "1.8.1" ], "metadata": { "description": "The version of Kubernetes." } }, "gitRepository": { "type": "string", "metadata": { "description": "URL to a public git repository that includes a Dockerfile." }, "defaultValue": "https://github.com/Azure/azure-quickstart-templates" }, "_artifactsLocation": { "type": "string", "defaultValue": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/jenkins-cicd-container/", "metadata": { "description": "The base URI where artifacts required by this template are located. When the template is deployed using the accompanying scripts, a private location in the subscription will be used and this value will be automatically generated." } }, "_artifactsLocationSasToken": { "type": "string", "defaultValue": "", "metadata": { "description": "The sasToken required to access _artifactsLocation. When the template is deployed using the accompanying scripts, a sasToken will be automatically generated." } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } } }, "variables": { "jenkinsVMName": "jenkins", "grafanaVMName": "grafana", "cosmosDbName": "[parameters('cosmosDbName')]", "acrName": "[parameters('acrName')]", "virtualNetworkName": "virtual-network", "subnetName": "default-subnet" }, "resources": [ { "name": "[variables('acrName')]", "type": "Microsoft.ContainerRegistry/registries", "location": "[parameters('location')]", "apiVersion": "2017-10-01", "sku": { "name": "Basic" }, "properties": { "adminUserEnabled": true } }, { "apiVersion": "2015-04-08", "kind": "MongoDB", "type": "Microsoft.DocumentDb/databaseAccounts", "name": "[variables('cosmosDbName')]", "location": "[parameters('location')]", "properties": { "databaseAccountOfferType": "Standard" } }, { "apiVersion": "2016-09-01", "type": "Microsoft.Network/virtualNetworks", "name": "[variables('virtualNetworkName')]", "location": "[parameters('location')]", "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "subnets": [ { "name": "[variables('subnetName')]", "properties": { "addressPrefix": "10.0.0.0/24" } } ] } }, { "apiVersion": "2017-05-10", "name": "jenkinsDeployment", "type": "Microsoft.Resources/deployments", "dependsOn": [ "[resourceId('Microsoft.ContainerRegistry/registries', variables('acrName'))]", "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]", "[resourceId('Microsoft.DocumentDb/databaseAccounts', variables('cosmosDbName'))]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[concat(parameters('_artifactsLocation'), 'nested/jenkins.json', parameters('_artifactsLocationSasToken'))]", "contentVersion": "1.0.0.0" }, "parameters": { "jenkinsVMName": { "value": "[variables('jenkinsVMName')]" }, "spClientId": { "value": "[parameters('spClientId')]" }, "spClientSecret": { "value": "[parameters('spClientSecret')]" }, "linuxAdminUsername": { "value": "[parameters('linuxAdminUsername')]" }, "linuxAdminPassword": { "value": "[parameters('linuxAdminPassword')]" }, "dnsPrefix": { "value": "[parameters('jenkinsDnsPrefix')]" }, "subnetId": { "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" }, "gitRepository": { "value": "[parameters('gitRepository')]" }, "acrServer": { "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName'))).loginServer]" }, "acrUsername": { "value": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName')), '2017-10-01').username]" }, "acrPassword": { "value": "[listCredentials(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName')), '2017-10-01').passwords[0].value]" }, "mongoDbURI": { "value": "[concat('mongodb://', variables('cosmosDbName'), ':', uriComponent(listKeys(resourceId('Microsoft.DocumentDb/databaseAccounts', variables('cosmosDbName')), '2015-04-08').primaryMasterKey), '@', variables('cosmosDbName'), '.documents.azure.com:10255/?ssl=true&replicaSet=globaldb')]" }, "kubernetesResourceGroupName": { "value": "[resourceGroup().name]" }, "kubernetesClusterName": { "value": "[parameters('kubernetesClusterName')]" }, "_artifactsLocation": { "value": "[parameters('_artifactsLocation')]" }, "_artifactsLocationSasToken": { "value": "[parameters('_artifactsLocationSasToken')]" } } } }, { "apiVersion": "2017-08-31", "type": "Microsoft.ContainerService/managedClusters", "location": "eastus", "name": "[parameters('kubernetesClusterName')]", "properties": { "kubernetesVersion": "[parameters('kubernetesVersion')]", "dnsPrefix": "[parameters('kubernetesDnsPrefix')]", "agentPoolProfiles": [ { "name": "agentpool", "osDiskSizeGB": 0, "count": "[parameters('kubernetesAgentCount')]", "vmSize": "[parameters('kubernetesAgentVMSize')]", "osType": "Linux", "storageProfile": "ManagedDisks" } ], "linuxProfile": { "adminUsername": "[parameters('linuxAdminUsername')]", "ssh": { "publicKeys": [ { "keyData": "[parameters('linuxSSHPublicKey')]" } ] } }, "servicePrincipalProfile": { "ClientId": "[parameters('spClientId')]", "Secret": "[parameters('spClientSecret')]" } } }, { "apiVersion": "2017-05-10", "name": "grafanaDeployment", "type": "Microsoft.Resources/deployments", "dependsOn": [ "[resourceId('Microsoft.DocumentDb/databaseAccounts', variables('cosmosDbName'))]", "[resourceId('Microsoft.ContainerService/managedClusters', parameters('kubernetesClusterName'))]" ], "properties": { "mode": "Incremental", "templateLink": { "uri": "[concat(parameters('_artifactsLocation'), 'nested/grafana.json', parameters('_artifactsLocationSasToken'))]", "contentVersion": "1.0.0.0" }, "parameters": { "grafanaVMName": { "value": "[variables('grafanaVMName')]" }, "spClientId": { "value": "[parameters('spClientId')]" }, "spClientSecret": { "value": "[parameters('spClientSecret')]" }, "linuxAdminUsername": { "value": "[parameters('linuxAdminUsername')]" }, "linuxAdminPassword": { "value": "[parameters('linuxAdminPassword')]" }, "dnsPrefix": { "value": "[parameters('grafanaDnsPrefix')]" }, "subnetId": { "value": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]" }, "cosmosDbName": { "value": "[parameters('cosmosDbName')]" }, "kubernetesClusterName": { "value": "[parameters('kubernetesClusterName')]" }, "_artifactsLocation": { "value": "[parameters('_artifactsLocation')]" }, "_artifactsLocationSasToken": { "value": "[parameters('_artifactsLocationSasToken')]" } } } } ], "outputs": { "jenkinsURL": { "type": "string", "value": "[reference('jenkinsDeployment').outputs.jenkinsURL.value]" }, "jenkinsSSH": { "type": "string", "value": "[reference('jenkinsDeployment').outputs.jenkinsSSH.value]" }, "azureContainerRegistryUrl": { "type": "string", "value": "[reference(resourceId('Microsoft.ContainerRegistry/registries', variables('acrName'))).loginServer]" }, "kubernetesControlPlaneFQDN": { "type": "string", "value": "[reference(concat('Microsoft.ContainerService/managedClusters/', parameters('kubernetesClusterName'))).fqdn]" }, "grafanaUrl": { "type": "string", "value": "[reference('grafanaDeployment').outputs.grafanaURL.value]" } } }