зеркало из https://github.com/Azure/ARO-RP.git
974 строки
59 KiB
JSON
974 строки
59 KiB
JSON
{
|
|
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
|
|
"contentVersion": "1.0.0.0",
|
|
"parameters": {
|
|
"acrResourceId": {
|
|
"type": "string"
|
|
},
|
|
"adminApiCaBundle": {
|
|
"type": "string"
|
|
},
|
|
"adminApiClientCertCommonName": {
|
|
"type": "string"
|
|
},
|
|
"armApiCaBundle": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"armApiClientCertCommonName": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"armClientId": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"azureCloudName": {
|
|
"type": "string"
|
|
},
|
|
"billingE2EStorageAccountId": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"billingServicePrincipalId": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"clusterMdmAccount": {
|
|
"type": "string"
|
|
},
|
|
"clusterMdsdAccount": {
|
|
"type": "string"
|
|
},
|
|
"clusterMdsdConfigVersion": {
|
|
"type": "string"
|
|
},
|
|
"clusterMdsdNamespace": {
|
|
"type": "string"
|
|
},
|
|
"clusterParentDomainName": {
|
|
"type": "string"
|
|
},
|
|
"databaseAccountName": {
|
|
"type": "string"
|
|
},
|
|
"disableCosmosDBFirewall": {
|
|
"type": "bool",
|
|
"defaultValue": false
|
|
},
|
|
"extraCosmosDBIPs": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"fpClientId": {
|
|
"type": "string"
|
|
},
|
|
"fpServicePrincipalId": {
|
|
"type": "string"
|
|
},
|
|
"keyvaultDNSSuffix": {
|
|
"type": "string"
|
|
},
|
|
"keyvaultPrefix": {
|
|
"type": "string"
|
|
},
|
|
"mdmFrontendUrl": {
|
|
"type": "string"
|
|
},
|
|
"mdsdEnvironment": {
|
|
"type": "string"
|
|
},
|
|
"portalAccessGroupIds": {
|
|
"type": "string"
|
|
},
|
|
"portalClientId": {
|
|
"type": "string"
|
|
},
|
|
"portalElevatedGroupIds": {
|
|
"type": "string"
|
|
},
|
|
"rpFeatures": {
|
|
"type": "string",
|
|
"defaultValue": ""
|
|
},
|
|
"rpImage": {
|
|
"type": "string"
|
|
},
|
|
"rpMdmAccount": {
|
|
"type": "string"
|
|
},
|
|
"rpMdsdAccount": {
|
|
"type": "string"
|
|
},
|
|
"rpMdsdConfigVersion": {
|
|
"type": "string"
|
|
},
|
|
"rpMdsdNamespace": {
|
|
"type": "string"
|
|
},
|
|
"rpParentDomainName": {
|
|
"type": "string"
|
|
},
|
|
"rpServicePrincipalId": {
|
|
"type": "string"
|
|
},
|
|
"rpVmssCapacity": {
|
|
"type": "int",
|
|
"defaultValue": 3
|
|
},
|
|
"sshPublicKey": {
|
|
"type": "string"
|
|
},
|
|
"storageAccountDomain": {
|
|
"type": "string"
|
|
},
|
|
"subscriptionResourceGroupName": {
|
|
"type": "string"
|
|
},
|
|
"vmSize": {
|
|
"type": "string",
|
|
"defaultValue": "Standard_D2s_v3"
|
|
},
|
|
"vmssName": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"resources": [
|
|
{
|
|
"sku": {
|
|
"name": "Standard"
|
|
},
|
|
"properties": {
|
|
"publicIPAllocationMethod": "Static"
|
|
},
|
|
"name": "rp-pip",
|
|
"type": "Microsoft.Network/publicIPAddresses",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01"
|
|
},
|
|
{
|
|
"sku": {
|
|
"name": "Standard"
|
|
},
|
|
"properties": {
|
|
"publicIPAllocationMethod": "Static"
|
|
},
|
|
"name": "portal-pip",
|
|
"type": "Microsoft.Network/publicIPAddresses",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01"
|
|
},
|
|
{
|
|
"sku": {
|
|
"name": "Standard"
|
|
},
|
|
"properties": {
|
|
"frontendIPConfigurations": [
|
|
{
|
|
"properties": {
|
|
"publicIPAddress": {
|
|
"id": "[resourceId('Microsoft.Network/publicIPAddresses', 'rp-pip')]",
|
|
"tags": null
|
|
}
|
|
},
|
|
"name": "rp-frontend"
|
|
},
|
|
{
|
|
"properties": {
|
|
"publicIPAddress": {
|
|
"id": "[resourceId('Microsoft.Network/publicIPAddresses', 'portal-pip')]",
|
|
"tags": null
|
|
}
|
|
},
|
|
"name": "portal-frontend"
|
|
}
|
|
],
|
|
"backendAddressPools": [
|
|
{
|
|
"name": "rp-backend"
|
|
}
|
|
],
|
|
"loadBalancingRules": [
|
|
{
|
|
"properties": {
|
|
"frontendIPConfiguration": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', 'rp-lb', 'rp-frontend')]"
|
|
},
|
|
"backendAddressPool": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb', 'rp-backend')]"
|
|
},
|
|
"probe": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', 'rp-lb', 'rp-probe')]"
|
|
},
|
|
"protocol": "Tcp",
|
|
"loadDistribution": "Default",
|
|
"frontendPort": 443,
|
|
"backendPort": 443
|
|
},
|
|
"name": "rp-lbrule"
|
|
},
|
|
{
|
|
"properties": {
|
|
"frontendIPConfiguration": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', 'rp-lb', 'portal-frontend')]"
|
|
},
|
|
"backendAddressPool": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb', 'rp-backend')]"
|
|
},
|
|
"probe": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', 'rp-lb', 'portal-probe-https')]"
|
|
},
|
|
"protocol": "Tcp",
|
|
"loadDistribution": "Default",
|
|
"frontendPort": 443,
|
|
"backendPort": 444
|
|
},
|
|
"name": "portal-lbrule"
|
|
},
|
|
{
|
|
"properties": {
|
|
"frontendIPConfiguration": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', 'rp-lb', 'portal-frontend')]"
|
|
},
|
|
"backendAddressPool": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb', 'rp-backend')]"
|
|
},
|
|
"probe": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', 'rp-lb', 'portal-probe-ssh')]"
|
|
},
|
|
"protocol": "Tcp",
|
|
"loadDistribution": "Default",
|
|
"frontendPort": 22,
|
|
"backendPort": 2222
|
|
},
|
|
"name": "portal-lbrule-ssh"
|
|
}
|
|
],
|
|
"probes": [
|
|
{
|
|
"properties": {
|
|
"protocol": "Https",
|
|
"port": 443,
|
|
"numberOfProbes": 2,
|
|
"requestPath": "/healthz/ready"
|
|
},
|
|
"name": "rp-probe"
|
|
},
|
|
{
|
|
"properties": {
|
|
"protocol": "Https",
|
|
"port": 444,
|
|
"numberOfProbes": 2,
|
|
"requestPath": "/healthz/ready"
|
|
},
|
|
"name": "portal-probe-https"
|
|
},
|
|
{
|
|
"properties": {
|
|
"protocol": "Tcp",
|
|
"port": 2222,
|
|
"numberOfProbes": 2
|
|
},
|
|
"name": "portal-probe-ssh"
|
|
}
|
|
]
|
|
},
|
|
"name": "rp-lb",
|
|
"type": "Microsoft.Network/loadBalancers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/publicIPAddresses', 'portal-pip')]",
|
|
"[resourceId('Microsoft.Network/publicIPAddresses', 'rp-pip')]"
|
|
]
|
|
},
|
|
{
|
|
"sku": {
|
|
"name": "Standard"
|
|
},
|
|
"properties": {
|
|
"frontendIPConfigurations": [
|
|
{
|
|
"properties": {
|
|
"subnet": {
|
|
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'rp-vnet', 'rp-subnet')]"
|
|
}
|
|
},
|
|
"name": "dbtoken-frontend"
|
|
}
|
|
],
|
|
"backendAddressPools": [
|
|
{
|
|
"name": "rp-backend"
|
|
}
|
|
],
|
|
"loadBalancingRules": [
|
|
{
|
|
"properties": {
|
|
"frontendIPConfiguration": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/frontendIPConfigurations', 'rp-lb-internal', 'dbtoken-frontend')]"
|
|
},
|
|
"backendAddressPool": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb-internal', 'rp-backend')]"
|
|
},
|
|
"probe": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', 'rp-lb-internal', 'dbtoken-probe')]"
|
|
},
|
|
"protocol": "Tcp",
|
|
"loadDistribution": "Default",
|
|
"frontendPort": 443,
|
|
"backendPort": 445
|
|
},
|
|
"name": "dbtoken-lbrule"
|
|
}
|
|
],
|
|
"probes": [
|
|
{
|
|
"properties": {
|
|
"protocol": "Https",
|
|
"port": 445,
|
|
"numberOfProbes": 2,
|
|
"requestPath": "/healthz/ready"
|
|
},
|
|
"name": "dbtoken-probe"
|
|
}
|
|
]
|
|
},
|
|
"name": "rp-lb-internal",
|
|
"type": "Microsoft.Network/loadBalancers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01"
|
|
},
|
|
{
|
|
"sku": {
|
|
"name": "[parameters('vmSize')]",
|
|
"tier": "Standard",
|
|
"capacity": "[parameters('rpVmssCapacity')]"
|
|
},
|
|
"properties": {
|
|
"upgradePolicy": {
|
|
"mode": "Manual"
|
|
},
|
|
"virtualMachineProfile": {
|
|
"osProfile": {
|
|
"computerNamePrefix": "[concat('rp-', parameters('vmssName'), '-')]",
|
|
"adminUsername": "cloud-user",
|
|
"linuxConfiguration": {
|
|
"disablePasswordAuthentication": true,
|
|
"ssh": {
|
|
"publicKeys": [
|
|
{
|
|
"path": "/home/cloud-user/.ssh/authorized_keys",
|
|
"keyData": "[parameters('sshPublicKey')]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"storageProfile": {
|
|
"imageReference": {
|
|
"publisher": "RedHat",
|
|
"offer": "RHEL",
|
|
"sku": "7-LVM",
|
|
"version": "latest"
|
|
},
|
|
"osDisk": {
|
|
"createOption": "FromImage",
|
|
"managedDisk": {
|
|
"storageAccountType": "Premium_LRS"
|
|
}
|
|
}
|
|
},
|
|
"networkProfile": {
|
|
"healthProbe": {
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/probes', 'rp-lb', 'rp-probe')]"
|
|
},
|
|
"networkInterfaceConfigurations": [
|
|
{
|
|
"name": "rp-vmss-nic",
|
|
"properties": {
|
|
"primary": true,
|
|
"ipConfigurations": [
|
|
{
|
|
"name": "rp-vmss-ipconfig",
|
|
"properties": {
|
|
"subnet": {
|
|
"id": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'rp-vnet', 'rp-subnet')]"
|
|
},
|
|
"primary": true,
|
|
"publicIPAddressConfiguration": {
|
|
"name": "rp-vmss-pip"
|
|
},
|
|
"loadBalancerBackendAddressPools": [
|
|
{
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb', 'rp-backend')]"
|
|
},
|
|
{
|
|
"id": "[resourceId('Microsoft.Network/loadBalancers/backendAddressPools', 'rp-lb-internal', 'rp-backend')]"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"diagnosticsProfile": {
|
|
"bootDiagnostics": {
|
|
"enabled": true,
|
|
"storageUri": "[concat('https://', parameters('storageAccountDomain'), '/')]"
|
|
}
|
|
},
|
|
"extensionProfile": {
|
|
"extensions": [
|
|
{
|
|
"name": "rp-vmss-cse",
|
|
"properties": {
|
|
"publisher": "Microsoft.Azure.Extensions",
|
|
"type": "CustomScript",
|
|
"typeHandlerVersion": "2.0",
|
|
"autoUpgradeMinorVersion": true,
|
|
"settings": {},
|
|
"protectedSettings": {
|
|
"script": "[base64(concat(base64ToString('c2V0IC1leAoK'),'ARMCLIENTID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('armClientId')),''')\n','MDMFRONTENDURL=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdmFrontendUrl')),''')\n','MDSDENVIRONMENT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('mdsdEnvironment')),''')\n','ACRRESOURCEID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('acrResourceId')),''')\n','ADMINAPICLIENTCERTCOMMONNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('adminApiClientCertCommonName')),''')\n','ARMAPICLIENTCERTCOMMONNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('armApiClientCertCommonName')),''')\n','BILLINGE2ESTORAGEACCOUNTID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('billingE2EStorageAccountId')),''')\n','CLUSTERMDMACCOUNT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('clusterMdmAccount')),''')\n','CLUSTERMDSDACCOUNT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('clusterMdsdAccount')),''')\n','CLUSTERMDSDCONFIGVERSION=$(base64 -d \u003c\u003c\u003c''',base64(parameters('clusterMdsdConfigVersion')),''')\n','CLUSTERMDSDNAMESPACE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('clusterMdsdNamespace')),''')\n','CLUSTERPARENTDOMAINNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('clusterParentDomainName')),''')\n','FPCLIENTID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('fpClientId')),''')\n','FPSERVICEPRINCIPALID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('fpServicePrincipalId')),''')\n','PORTALACCESSGROUPIDS=$(base64 -d \u003c\u003c\u003c''',base64(parameters('portalAccessGroupIds')),''')\n','PORTALCLIENTID=$(base64 -d \u003c\u003c\u003c''',base64(parameters('portalClientId')),''')\n','PORTALELEVATEDGROUPIDS=$(base64 -d \u003c\u003c\u003c''',base64(parameters('portalElevatedGroupIds')),''')\n','RPFEATURES=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpFeatures')),''')\n','RPIMAGE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpImage')),''')\n','RPMDMACCOUNT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMdmAccount')),''')\n','RPMDSDACCOUNT=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMdsdAccount')),''')\n','RPMDSDCONFIGVERSION=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMdsdConfigVersion')),''')\n','RPMDSDNAMESPACE=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpMdsdNamespace')),''')\n','RPPARENTDOMAINNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('rpParentDomainName')),''')\n','DATABASEACCOUNTNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('databaseAccountName')),''')\n','KEYVAULTPREFIX=$(base64 -d \u003c\u003c\u003c''',base64(parameters('keyvaultPrefix')),''')\n','KEYVAULTDNSSUFFIX=$(base64 -d \u003c\u003c\u003c''',base64(parameters('keyvaultDNSSuffix')),''')\n','AZURECLOUDNAME=$(base64 -d \u003c\u003c\u003c''',base64(parameters('azureCloudName')),''')\n','ADMINAPICABUNDLE=''',parameters('adminApiCaBundle'),'''\n','ARMAPICABUNDLE=''',parameters('armApiCaBundle'),'''\n','MDMIMAGE=''/genevamdm:master_20210401.1''\n','LOCATION=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().location),''')\n','SUBSCRIPTIONID=$(base64 -d \u003c\u003c\u003c''',base64(subscription().subscriptionId),''')\n','RESOURCEGROUPNAME=$(base64 -d \u003c\u003c\u003c''',base64(resourceGroup().name),''')\n','\n',base64ToString('Cnl1bSAteSB1cGRhdGUgLXggV0FMaW51eEFnZW50CgpsdmV4dGVuZCAtbCArNTAlRlJFRSAvZGV2L3Jvb3R2Zy9yb290bHYKeGZzX2dyb3dmcyAvCgpsdmV4dGVuZCAtbCArMTAwJUZSRUUgL2Rldi9yb290dmcvdmFybHYKeGZzX2dyb3dmcyAvdmFyCgojIGF2b2lkICJlcnJvcjogZGI1IGVycm9yKC0zMDk2OSkgZnJvbSBkYmVudi0+b3BlbjogQkRCMDA5MSBEQl9WRVJTSU9OX01JU01BVENIOiBEYXRhYmFzZSBlbnZpcm9ubWVudCB2ZXJzaW9uIG1pc21hdGNoIgpybSAtZiAvdmFyL2xpYi9ycG0vX19kYioKCnJwbSAtLWltcG9ydCBodHRwczovL2RsLmZlZG9yYXByb2plY3Qub3JnL3B1Yi9lcGVsL1JQTS1HUEctS0VZLUVQRUwtNwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5taWNyb3NvZnQuY29tL2tleXMvbWljcm9zb2Z0LmFzYwpycG0gLS1pbXBvcnQgaHR0cHM6Ly9wYWNrYWdlcy5mbHVlbnRiaXQuaW8vZmx1ZW50Yml0LmtleQoKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIHl1bSAteSBpbnN0YWxsIGh0dHBzOi8vZGwuZmVkb3JhcHJvamVjdC5vcmcvcHViL2VwZWwvZXBlbC1yZWxlYXNlLWxhdGVzdC03Lm5vYXJjaC5ycG0gJiYgYnJlYWsKICBpZiBbWyAke2F0dGVtcHR9IC1sdCA1IF1dOyB0aGVuIHNsZWVwIDEwOyBlbHNlIGV4aXQgMTsgZmkKZG9uZQoKY2F0ID4vZXRjL3l1bS5yZXBvcy5kL2F6dXJlLnJlcG8gPDwnRU9GJwpbYXp1cmUtY2xpXQpuYW1lPWF6dXJlLWNsaQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZS1jbGkKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9eWVzCgpbYXp1cmVjb3JlXQpuYW1lPWF6dXJlY29yZQpiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMubWljcm9zb2Z0LmNvbS95dW1yZXBvcy9henVyZWNvcmUKZW5hYmxlZD15ZXMKZ3BnY2hlY2s9bm8KRU9GCgpjYXQgPi9ldGMveXVtLnJlcG9zLmQvdGQtYWdlbnQtYml0LnJlcG8gPDwnRU9GJwpbdGQtYWdlbnQtYml0XQpuYW1lPXRkLWFnZW50LWJpdApiYXNldXJsPWh0dHBzOi8vcGFja2FnZXMuZmx1ZW50Yml0LmlvL2NlbnRvcy83LyRiYXNlYXJjaAplbmFibGVkPXllcwpncGdjaGVjaz15ZXMKRU9GCgpmb3IgYXR0ZW1wdCBpbiB7MS4uNX07IGRvCnl1bSAtLWVuYWJsZXJlcG89cmh1aS1yaGVsLTctc2VydmVyLXJodWktb3B0aW9uYWwtcnBtcyAteSBpbnN0YWxsIGF6c2VjLWNsYW1hdiBhenNlYy1tb25pdG9yIGF6dXJlLWNsaSBhenVyZS1tZHNkIGF6dXJlLXNlY3VyaXR5IGRvY2tlciBvcGVuc3NsLXBlcmwgdGQtYWdlbnQtYml0ICYmIGJyZWFrCiAgaWYgW1sgJHthdHRlbXB0fSAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKCnJwbSAtZSAkKHJwbSAtcWEgfCBncmVwIF5hYnJ0LSkKY2F0ID4vZXRjL3N5c2N0bC5kLzAxLWRpc2FibGUtY29yZS5jb25mIDw8J0VPRicKa2VybmVsLmNvcmVfcGF0dGVybiA9IHwvYmluL3RydWUKRU9GCnN5c2N0bCAtLXN5c3RlbQoKZmlyZXdhbGwtY21kIC0tYWRkLXBvcnQ9NDQzL3RjcCAtLXBlcm1hbmVudApmaXJld2FsbC1jbWQgLS1hZGQtcG9ydD00NDQvdGNwIC0tcGVybWFuZW50CmZpcmV3YWxsLWNtZCAtLWFkZC1wb3J0PTQ0NS90Y3AgLS1wZXJtYW5lbnQKZmlyZXdhbGwtY21kIC0tYWRkLXBvcnQ9MjIyMi90Y3AgLS1wZXJtYW5lbnQKCmNhdCA+L2V0Yy90ZC1hZ2VudC1iaXQvdGQtYWdlbnQtYml0LmNvbmYgPDwnRU9GJwpbSU5QVVRdCglOYW1lIHN5c3RlbWQKCVRhZyBqb3VybmFsZAoJU3lzdGVtZF9GaWx0ZXIgX0NPTU09YXJvCgpbRklMVEVSXQoJTmFtZSBtb2RpZnkKCU1hdGNoIGpvdXJuYWxkCglSZW1vdmVfd2lsZGNhcmQgXwoJUmVtb3ZlIFRJTUVTVEFNUAoKW0ZJTFRFUl0KCU5hbWUgcmV3cml0ZV90YWcKCU1hdGNoIGpvdXJuYWxkCglSdWxlICRMT0dLSU5EIGlmeGF1ZGl0IGlmeGF1ZGl0IGZhbHNlCgpbT1VUUFVUXQoJTmFtZSBmb3J3YXJkCglNYXRjaCAqCglQb3J0IDI5MjMwCkVPRgoKZXhwb3J0IEFaVVJFX0NMT1VEX05BTUU9JEFaVVJFQ0xPVUROQU1FCgpheiBsb2dpbiAtaQpheiBhY2NvdW50IHNldCAtcyAiJFNVQlNDUklQVElPTklEIgoKc3lzdGVtY3RsIHN0YXJ0IGRvY2tlci5zZXJ2aWNlCmF6IGFjciBsb2dpbiAtLW5hbWUgIiQoc2VkIC1lICdzfC4qL3x8JyA8PDwiJEFDUlJFU09VUkNFSUQiKSIKCk1ETUlNQUdFPSIke1JQSU1BR0UlJS8qfS8ke01ETUlNQUdFIyMqL30iCmRvY2tlciBwdWxsICIkTURNSU1BR0UiCmRvY2tlciBwdWxsICIkUlBJTUFHRSIKCmF6IGxvZ291dAoKbWtkaXIgL2V0Yy9hcm8tcnAKYmFzZTY0IC1kIDw8PCIkQURNSU5BUElDQUJVTkRMRSIgPi9ldGMvYXJvLXJwL2FkbWluLWNhLWJ1bmRsZS5wZW0KaWYgW1sgLW4gIiRBUk1BUElDQUJVTkRMRSIgXV07IHRoZW4KICBiYXNlNjQgLWQgPDw8IiRBUk1BUElDQUJVTkRMRSIgPi9ldGMvYXJvLXJwL2FybS1jYS1idW5kbGUucGVtCmZpCmNob3duIC1SIDEwMDA6MTAwMCAvZXRjL2Fyby1ycAoKY2F0ID4vZXRjL3N5c2NvbmZpZy9tZG0gPDxFT0YKTURNRlJPTlRFTkRVUkw9JyRNRE1GUk9OVEVORFVSTCcKTURNSU1BR0U9JyRNRE1JTUFHRScKTURNU09VUkNFRU5WSVJPTk1FTlQ9JyRMT0NBVElPTicKTURNU09VUkNFUk9MRT1ycApNRE1TT1VSQ0VST0xFSU5TVEFOQ0U9JyQoaG9zdG5hbWUpJwpFT0YKCm1rZGlyIC92YXIvZXR3CmNhdCA+L2V0Yy9zeXN0ZW1kL3N5c3RlbS9tZG0uc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9tZG0KRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0tZW50cnlwb2ludCAvdXNyL3NiaW4vTWV0cmljc0V4dGVuc2lvbiBcCiAgLS1ob3N0bmFtZSAlSCBcCiAgLS1uYW1lICVOIFwKICAtLXJtIFwKICAtbSAyZyBcCiAgLXYgL2V0Yy9tZG0ucGVtOi9ldGMvbWRtLnBlbSBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJE1ETUlNQUdFIFwKICAtQ2VydEZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtRnJvbnRFbmRVcmwgJE1ETUZST05URU5EVVJMIFwKICAtTG9nZ2VyIENvbnNvbGUgXAogIC1Mb2dMZXZlbCBXYXJuaW5nIFwKICAtUHJpdmF0ZUtleUZpbGUgL2V0Yy9tZG0ucGVtIFwKICAtU291cmNlRW52aXJvbm1lbnQgJE1ETVNPVVJDRUVOVklST05NRU5UIFwKICAtU291cmNlUm9sZSAkTURNU09VUkNFUk9MRSBcCiAgLVNvdXJjZVJvbGVJbnN0YW5jZSAkTURNU09VUkNFUk9MRUlOU1RBTkNFCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wICVOClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MQpTdGFydExpbWl0SW50ZXJ2YWw9MAoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9hcm8tcnAgPDxFT0YKQUNSX1JFU09VUkNFX0lEPSckQUNSUkVTT1VSQ0VJRCcKQURNSU5fQVBJX0NMSUVOVF9DRVJUX0NPTU1PTl9OQU1FPSckQURNSU5BUElDTElFTlRDRVJUQ09NTU9OTkFNRScKQVJNX0FQSV9DTElFTlRfQ0VSVF9DT01NT05fTkFNRT0nJEFSTUFQSUNMSUVOVENFUlRDT01NT05OQU1FJwpBWlVSRV9BUk1fQ0xJRU5UX0lEPSckQVJNQ0xJRU5USUQnCkFaVVJFX0ZQX0NMSUVOVF9JRD0nJEZQQ0xJRU5USUQnCkFaVVJFX0ZQX1NFUlZJQ0VfUFJJTkNJUEFMX0lEPSckRlBTRVJWSUNFUFJJTkNJUEFMSUQnCkJJTExJTkdfRTJFX1NUT1JBR0VfQUNDT1VOVF9JRD0nJEJJTExJTkdFMkVTVE9SQUdFQUNDT1VOVElEJwpDTFVTVEVSX01EU0RfQUNDT1VOVD0nJENMVVNURVJNRFNEQUNDT1VOVCcKQ0xVU1RFUl9NRFNEX0NPTkZJR19WRVJTSU9OPSckQ0xVU1RFUk1EU0RDT05GSUdWRVJTSU9OJwpDTFVTVEVSX01EU0RfTkFNRVNQQUNFPSckQ0xVU1RFUk1EU0ROQU1FU1BBQ0UnCkRBVEFCQVNFX0FDQ09VTlRfTkFNRT0nJERBVEFCQVNFQUNDT1VOVE5BTUUnCkRPTUFJTl9OQU1FPSckTE9DQVRJT04uJENMVVNURVJQQVJFTlRET01BSU5OQU1FJwpLRVlWQVVMVF9QUkVGSVg9JyRLRVlWQVVMVFBSRUZJWCcKTURNX0FDQ09VTlQ9JyRSUE1ETUFDQ09VTlQnCk1ETV9OQU1FU1BBQ0U9UlAKTURTRF9FTlZJUk9OTUVOVD0nJE1EU0RFTlZJUk9OTUVOVCcKUlBfRkVBVFVSRVM9JyRSUEZFQVRVUkVTJwpSUElNQUdFPSckUlBJTUFHRScKRU9GCgpjYXQgPi9ldGMvc3lzdGVtZC9zeXN0ZW0vYXJvLXJwLnNlcnZpY2UgPDwnRU9GJwpbVW5pdF0KQWZ0ZXI9ZG9ja2VyLnNlcnZpY2UKUmVxdWlyZXM9ZG9ja2VyLnNlcnZpY2UKCltTZXJ2aWNlXQpFbnZpcm9ubWVudEZpbGU9L2V0Yy9zeXNjb25maWcvYXJvLXJwCkV4ZWNTdGFydFByZT0tL3Vzci9iaW4vZG9ja2VyIHJtIC1mICVOCkV4ZWNTdGFydD0vdXNyL2Jpbi9kb2NrZXIgcnVuIFwKICAtLWhvc3RuYW1lICVIIFwKICAtLW5hbWUgJU4gXAogIC0tcm0gXAogIC1lIEFDUl9SRVNPVVJDRV9JRCBcCiAgLWUgQURNSU5fQVBJX0NMSUVOVF9DRVJUX0NPTU1PTl9OQU1FIFwKICAtZSBBUk1fQVBJX0NMSUVOVF9DRVJUX0NPTU1PTl9OQU1FIFwKICAtZSBBWlVSRV9BUk1fQ0xJRU5UX0lEIFwKICAtZSBBWlVSRV9GUF9DTElFTlRfSUQgXAogIC1lIEJJTExJTkdfRTJFX1NUT1JBR0VfQUNDT1VOVF9JRCBcCiAgLWUgQ0xVU1RFUl9NRFNEX0FDQ09VTlQgXAogIC1lIENMVVNURVJfTURTRF9DT05GSUdfVkVSU0lPTiBcCiAgLWUgQ0xVU1RFUl9NRFNEX05BTUVTUEFDRSBcCiAgLWUgREFUQUJBU0VfQUNDT1VOVF9OQU1FIFwKICAtZSBET01BSU5fTkFNRSBcCiAgLWUgS0VZVkFVTFRfUFJFRklYIFwKICAtZSBNRE1fQUNDT1VOVCBcCiAgLWUgTURNX05BTUVTUEFDRSBcCiAgLWUgTURTRF9FTlZJUk9OTUVOVCBcCiAgLWUgUlBfRkVBVFVSRVMgXAogIC1tIDJnIFwKICAtcCA0NDM6ODQ0MyBcCiAgLXYgL2V0Yy9hcm8tcnA6L2V0Yy9hcm8tcnAgXAogIC12IC9ydW4vc3lzdGVtZC9qb3VybmFsOi9ydW4vc3lzdGVtZC9qb3VybmFsIFwKICAtdiAvdmFyL2V0dzovdmFyL2V0dzp6IFwKICAkUlBJTUFHRSBcCiAgcnAKRXhlY1N0b3A9L3Vzci9iaW4vZG9ja2VyIHN0b3AgLXQgMzYwMCAlTgpUaW1lb3V0U3RvcFNlYz0zNjAwClJlc3RhcnQ9YWx3YXlzClJlc3RhcnRTZWM9MQpTdGFydExpbWl0SW50ZXJ2YWw9MAoKW0luc3RhbGxdCldhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CkVPRgoKY2F0ID4vZXRjL3N5c2NvbmZpZy9hcm8tZGJ0b2tlbiA8PEVPRgpEQVRBQkFTRV9BQ0NPVU5UX05BTUU9JyREQVRBQkFTRUFDQ09VTlROQU1FJwpLRVlWQVVMVF9QUkVGSVg9JyRLRVlWQVVMVFBSRUZJWCcKTURNX0FDQ09VTlQ9JyRSUE1ETUFDQ09VTlQnCk1ETV9OQU1FU1BBQ0U9REJUb2tlbgpSUElNQUdFPSckUlBJTUFHRScKRU9GCgpjYXQgPi9ldGMvc3lzdGVtZC9zeXN0ZW0vYXJvLWRidG9rZW4uc2VydmljZSA8PCdFT0YnCltVbml0XQpBZnRlcj1kb2NrZXIuc2VydmljZQpSZXF1aXJlcz1kb2NrZXIuc2VydmljZQoKW1NlcnZpY2VdCkVudmlyb25tZW50RmlsZT0vZXRjL3N5c2NvbmZpZy9hcm8tZGJ0b2tlbgpFeGVjU3RhcnRQcmU9LS91c3IvYmluL2RvY2tlciBybSAtZiAlTgpFeGVjU3RhcnQ9L3Vzci9iaW4vZG9ja2VyIHJ1biBcCiAgLS1ob3N0bmFtZSAlSCBcCiAgLS1uYW1lICVOIFwKICAtLXJtIFwKICAtZSBEQVRBQkFTRV9BQ0NPVU5UX05BTUUgXAogIC1lIEtFWVZBVUxUX1BSRUZJWCBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1tIDJnIFwKICAtcCA0NDU6ODQ0NSBcCiAgLXYgL3J1bi9zeXN0ZW1kL2pvdXJuYWw6L3J1bi9zeXN0ZW1kL2pvdXJuYWwgXAogIC12IC92YXIvZXR3Oi92YXIvZXR3OnogXAogICRSUElNQUdFIFwKICBkYnRva2VuCkV4ZWNTdG9wPS91c3IvYmluL2RvY2tlciBzdG9wIC10IDM2MDAgJU4KVGltZW91dFN0b3BTZWM9MzYwMApSZXN0YXJ0PWFsd2F5cwpSZXN0YXJ0U2VjPTEKU3RhcnRMaW1pdEludGVydmFsPTAKCltJbnN0YWxsXQpXYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApFT0YKCmNhdCA+L2V0Yy9zeXNjb25maWcvYXJvLW1vbml0b3IgPDxFT0YKQ0xVU1RFUl9NRE1fQUNDT1VOVD0nJENMVVNURVJNRE1BQ0NPVU5UJwpDTFVTVEVSX01ETV9OQU1FU1BBQ0U9QkJNCkRBVEFCQVNFX0FDQ09VTlRfTkFNRT0nJERBVEFCQVNFQUNDT1VOVE5BTUUnCktFWVZBVUxUX1BSRUZJWD0nJEtFWVZBVUxUUFJFRklYJwpNRE1fQUNDT1VOVD0nJFJQTURNQUNDT1VOVCcKTURNX05BTUVTUEFDRT1CQk0KUlBJTUFHRT0nJFJQSU1BR0UnCkVPRgoKY2F0ID4vZXRjL3N5c3RlbWQvc3lzdGVtL2Fyby1tb25pdG9yLnNlcnZpY2UgPDwnRU9GJwpbVW5pdF0KQWZ0ZXI9ZG9ja2VyLnNlcnZpY2UKUmVxdWlyZXM9ZG9ja2VyLnNlcnZpY2UKCltTZXJ2aWNlXQpFbnZpcm9ubWVudEZpbGU9L2V0Yy9zeXNjb25maWcvYXJvLW1vbml0b3IKRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0taG9zdG5hbWUgJUggXAogIC0tbmFtZSAlTiBcCiAgLS1ybSBcCiAgLWUgQ0xVU1RFUl9NRE1fQUNDT1VOVCBcCiAgLWUgQ0xVU1RFUl9NRE1fTkFNRVNQQUNFIFwKICAtZSBEQVRBQkFTRV9BQ0NPVU5UX05BTUUgXAogIC1lIEtFWVZBVUxUX1BSRUZJWCBcCiAgLWUgTURNX0FDQ09VTlQgXAogIC1lIE1ETV9OQU1FU1BBQ0UgXAogIC1tIDJnIFwKICAtdiAvcnVuL3N5c3RlbWQvam91cm5hbDovcnVuL3N5c3RlbWQvam91cm5hbCBcCiAgLXYgL3Zhci9ldHc6L3Zhci9ldHc6eiBcCiAgJFJQSU1BR0UgXAogIG1vbml0b3IKUmVzdGFydD1hbHdheXMKUmVzdGFydFNlYz0xClN0YXJ0TGltaXRJbnRlcnZhbD0wCgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCgpjYXQgPi9ldGMvc3lzY29uZmlnL2Fyby1wb3J0YWwgPDxFT0YKQVpVUkVfUE9SVEFMX0FDQ0VTU19HUk9VUF9JRFM9JyRQT1JUQUxBQ0NFU1NHUk9VUElEUycKQVpVUkVfUE9SVEFMX0NMSUVOVF9JRD0nJFBPUlRBTENMSUVOVElEJwpBWlVSRV9QT1JUQUxfRUxFVkFURURfR1JPVVBfSURTPSckUE9SVEFMRUxFVkFURURHUk9VUElEUycKREFUQUJBU0VfQUNDT1VOVF9OQU1FPSckREFUQUJBU0VBQ0NPVU5UTkFNRScKS0VZVkFVTFRfUFJFRklYPSckS0VZVkFVTFRQUkVGSVgnCk1ETV9BQ0NPVU5UPSckUlBNRE1BQ0NPVU5UJwpNRE1fTkFNRVNQQUNFPVBvcnRhbApQT1JUQUxfSE9TVE5BTUU9JyRMT0NBVElPTi5hZG1pbi4kUlBQQVJFTlRET01BSU5OQU1FJwpSUElNQUdFPSckUlBJTUFHRScKRU9GCgpjYXQgPi9ldGMvc3lzdGVtZC9zeXN0ZW0vYXJvLXBvcnRhbC5zZXJ2aWNlIDw8J0VPRicKW1VuaXRdCkFmdGVyPWRvY2tlci5zZXJ2aWNlClJlcXVpcmVzPWRvY2tlci5zZXJ2aWNlClN0YXJ0TGltaXRJbnRlcnZhbD0wCgpbU2VydmljZV0KRW52aXJvbm1lbnRGaWxlPS9ldGMvc3lzY29uZmlnL2Fyby1wb3J0YWwKRXhlY1N0YXJ0UHJlPS0vdXNyL2Jpbi9kb2NrZXIgcm0gLWYgJU4KRXhlY1N0YXJ0PS91c3IvYmluL2RvY2tlciBydW4gXAogIC0taG9zdG5hbWUgJUggXAogIC0tbmFtZSAlTiBcCiAgLS1ybSBcCiAgLWUgQVpVUkVfUE9SVEFMX0FDQ0VTU19HUk9VUF9JRFMgXAogIC1lIEFaVVJFX1BPUlRBTF9DTElFTlRfSUQgXAogIC1lIEFaVVJFX1BPUlRBTF9FTEVWQVRFRF9HUk9VUF9JRFMgXAogIC1lIERBVEFCQVNFX0FDQ09VTlRfTkFNRSBcCiAgLWUgS0VZVkFVTFRfUFJFRklYIFwKICAtZSBNRE1fQUNDT1VOVCBcCiAgLWUgTURNX05BTUVTUEFDRSBcCiAgLWUgUE9SVEFMX0hPU1ROQU1FIFwKICAtbSAyZyBcCiAgLXAgNDQ0Ojg0NDQgXAogIC1wIDIyMjI6MjIyMiBcCiAgLXYgL3J1bi9zeXN0ZW1kL2pvdXJuYWw6L3J1bi9zeXN0ZW1kL2pvdXJuYWwgXAogIC12IC92YXIvZXR3Oi92YXIvZXR3OnogXAogICRSUElNQUdFIFwKICBwb3J0YWwKUmVzdGFydD1hbHdheXMKUmVzdGFydFNlYz0xCgpbSW5zdGFsbF0KV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKRU9GCgpjaGNvbiAtUiBzeXN0ZW1fdTpvYmplY3Rfcjp2YXJfbG9nX3Q6czAgL3Zhci9vcHQvbWljcm9zb2Z0L2xpbnV4bW9uYWdlbnQKCm1rZGlyIC1wIC92YXIvbGliL3dhYWdlbnQvTWljcm9zb2Z0LkF6dXJlLktleVZhdWx0LlN0b3JlCgpmb3IgdmFyIGluICJtZHNkIiAibWRtIjsgZG8KY2F0ID4vZXRjL3N5c3RlbWQvc3lzdGVtL2Rvd25sb2FkLSR2YXItY3JlZGVudGlhbHMuc2VydmljZSA8PEVPRgpbVW5pdF0KRGVzY3JpcHRpb249UGVyaW9kaWMgJHZhciBjcmVkZW50aWFscyByZWZyZXNoCgpbU2VydmljZV0KVHlwZT1vbmVzaG90CkV4ZWNTdGFydD0vdXNyL2xvY2FsL2Jpbi9kb3dubG9hZC1jcmVkZW50aWFscy5zaCAkdmFyCkVPRgoKY2F0ID4vZXRjL3N5c3RlbWQvc3lzdGVtL2Rvd25sb2FkLSR2YXItY3JlZGVudGlhbHMudGltZXIgPDxFT0YKW1VuaXRdCkRlc2NyaXB0aW9uPVBlcmlvZGljICR2YXIgY3JlZGVudGlhbHMgcmVmcmVzaAoKW1RpbWVyXQpPbkJvb3RTZWM9MG1pbgpPbkNhbGVuZGFyPTAvMTI6MDA6MDAKQWNjdXJhY3lTZWM9NXMKCltJbnN0YWxsXQpXYW50ZWRCeT10aW1lcnMudGFyZ2V0CkVPRgpkb25lCgpjYXQgPi91c3IvbG9jYWwvYmluL2Rvd25sb2FkLWNyZWRlbnRpYWxzLnNoIDw8RU9GCiMhL2Jpbi9iYXNoCnNldCAtZXUKCkNPTVBPTkVOVD0iXCQxIgplY2hvICJEb3dubG9hZCBcJENPTVBPTkVOVCBjcmVkZW50aWFscyIKClRFTVBfRElSPVwkKG1rdGVtcCAtZCkKZXhwb3J0IEFaVVJFX0NPTkZJR19ESVI9XCQobWt0ZW1wIC1kKQpheiBsb2dpbiAtaQpheiBhY2NvdW50IHNldCAtcyAiJFNVQlNDUklQVElPTklEIgoKdHJhcCAiY2xlYW51cCIgRVhJVAoKY2xlYW51cCgpIHsKICBheiBsb2dvdXQKICBbWyAiXCRURU1QX0RJUiIgPX4gL3RtcC8uKyBdXSAmJiBybSAtcmYgXCRURU1QX0RJUgogIFtbICJcJEFaVVJFX0NPTkZJR19ESVIiID1+IC90bXAvLisgXV0gJiYgcm0gLXJmIFwkQVpVUkVfQ09ORklHX0RJUgp9CgppZiBbICJcJENPTVBPTkVOVCIgPSAibWRtIiBdOyB0aGVuCiAgQ1VSUkVOVF9DRVJUX0ZJTEU9Ii9ldGMvbWRtLnBlbSIKZWxpZiBbICJcJENPTVBPTkVOVCIgPSAibWRzZCIgXTsgdGhlbgogIENVUlJFTlRfQ0VSVF9GSUxFPSIvdmFyL2xpYi93YWFnZW50L01pY3Jvc29mdC5BenVyZS5LZXlWYXVsdC5TdG9yZS9tZHNkLnBlbSIKZWxzZQogIGVjaG8gSW52YWxpZCB1c2FnZSAmJiBleGl0IDEKZmkKClNFQ1JFVF9OQU1FPSJycC1cJHtDT01QT05FTlR9IgpORVdfQ0VSVF9GSUxFPSJcJFRFTVBfRElSL1wkQ09NUE9ORU5ULnBlbSIKZm9yIGF0dGVtcHQgaW4gezEuLjV9OyBkbwogIGF6IGtleXZhdWx0IHNlY3JldCBkb3dubG9hZCAtLWZpbGUgXCRORVdfQ0VSVF9GSUxFIC0taWQgImh0dHBzOi8vJEtFWVZBVUxUUFJFRklYLXN2Yy4kS0VZVkFVTFRETlNTVUZGSVgvc2VjcmV0cy9cJFNFQ1JFVF9OQU1FIiAmJiBicmVhawogIGlmIFtbIFwkYXR0ZW1wdCAtbHQgNSBdXTsgdGhlbiBzbGVlcCAxMDsgZWxzZSBleGl0IDE7IGZpCmRvbmUKCmlmIFsgLWYgXCRORVdfQ0VSVF9GSUxFIF07IHRoZW4KICBpZiBbICJcJENPTVBPTkVOVCIgPSAibWRzZCIgXTsgdGhlbgogICAgY2hvd24gc3lzbG9nOnN5c2xvZyBcJE5FV19DRVJUX0ZJTEUKICBlbHNlCiAgICBzZWQgLWkgLW5lICcxLC9FTkQgQ0VSVElGSUNBVEUvIHAnIFwkTkVXX0NFUlRfRklMRQogIGZpCiAgY2htb2QgMDYwMCBcJE5FV19DRVJUX0ZJTEUKICBtdiBcJE5FV19DRVJUX0ZJTEUgXCRDVVJSRU5UX0NFUlRfRklMRQplbHNlCiAgZWNobyBGYWlsZWQgdG8gcmVmcmVzaCBjZXJ0aWZpY2F0ZSBmb3IgXCRDT01QT05FTlQgJiYgZXhpdCAxCmZpCkVPRgoKY2htb2QgdSt4IC91c3IvbG9jYWwvYmluL2Rvd25sb2FkLWNyZWRlbnRpYWxzLnNoCgpzeXN0ZW1jdGwgZW5hYmxlIGRvd25sb2FkLW1kc2QtY3JlZGVudGlhbHMudGltZXIKc3lzdGVtY3RsIGVuYWJsZSBkb3dubG9hZC1tZG0tY3JlZGVudGlhbHMudGltZXIKCi91c3IvbG9jYWwvYmluL2Rvd25sb2FkLWNyZWRlbnRpYWxzLnNoIG1kc2QKL3Vzci9sb2NhbC9iaW4vZG93bmxvYWQtY3JlZGVudGlhbHMuc2ggbWRtCk1EU0RDRVJUSUZJQ0FURVNBTj0kKG9wZW5zc2wgeDUwOSAtaW4gL3Zhci9saWIvd2FhZ2VudC9NaWNyb3NvZnQuQXp1cmUuS2V5VmF1bHQuU3RvcmUvbWRzZC5wZW0gLW5vb3V0IC1zdWJqZWN0IHwgc2VkIC1lICdzLy4qQ049Ly8nKQoKbWtkaXIgL2V0Yy9zeXN0ZW1kL3N5c3RlbS9tZHNkLnNlcnZpY2UuZApjYXQgPi9ldGMvc3lzdGVtZC9zeXN0ZW0vbWRzZC5zZXJ2aWNlLmQvb3ZlcnJpZGUuY29uZiA8PCdFT0YnCltVbml0XQpBZnRlcj1uZXR3b3JrLW9ubGluZS50YXJnZXQKRU9GCgpjYXQgPi9ldGMvZGVmYXVsdC9tZHNkIDw8RU9GCk1EU0RfUk9MRV9QUkVGSVg9L3Zhci9ydW4vbWRzZC9kZWZhdWx0Ck1EU0RfT1BUSU9OUz0iLUEgLWQgLXIgXCRNRFNEX1JPTEVfUFJFRklYIgoKZXhwb3J0IE1PTklUT1JJTkdfR0NTX0VOVklST05NRU5UPSckTURTREVOVklST05NRU5UJwpleHBvcnQgTU9OSVRPUklOR19HQ1NfQUNDT1VOVD0nJFJQTURTREFDQ09VTlQnCmV4cG9ydCBNT05JVE9SSU5HX0dDU19SRUdJT049JyRMT0NBVElPTicKZXhwb3J0IE1PTklUT1JJTkdfR0NTX0FVVEhfSURfVFlQRT1BdXRoS2V5VmF1bHQKZXhwb3J0IE1PTklUT1JJTkdfR0NTX0FVVEhfSUQ9JyRNRFNEQ0VSVElGSUNBVEVTQU4nCmV4cG9ydCBNT05JVE9SSU5HX0dDU19OQU1FU1BBQ0U9JyRSUE1EU0ROQU1FU1BBQ0UnCmV4cG9ydCBNT05JVE9SSU5HX0NPTkZJR19WRVJTSU9OPSckUlBNRFNEQ09ORklHVkVSU0lPTicKZXhwb3J0IE1PTklUT1JJTkdfVVNFX0dFTkVWQV9DT05GSUdfU0VSVklDRT10cnVlCgpleHBvcnQgTU9OSVRPUklOR19URU5BTlQ9JyRMT0NBVElPTicKZXhwb3J0IE1PTklUT1JJTkdfUk9MRT1ycApleHBvcnQgTU9OSVRPUklOR19ST0xFX0lOU1RBTkNFPSckKGhvc3RuYW1lKScKRU9GCgojIHNldHRpbmcgTU9OSVRPUklOR19HQ1NfQVVUSF9JRF9UWVBFPUF1dGhLZXlWYXVsdCBzZWVtcyB0byBoYXZlIGNhdXNlZCBtZHNkIG5vdAojIHRvIGhvbm91ciBTU0xfQ0VSVF9GSUxFIGFueSBtb3JlLCBoZWF2ZW4gb25seSBrbm93cyB3aHkuCm1rZGlyIC1wIC91c3IvbGliL3NzbC9jZXJ0cwpjc3BsaXQgLWYgL3Vzci9saWIvc3NsL2NlcnRzL2NlcnQtIC1iICUwM2QucGVtIC9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0IC9eJC8xIHsqfSA+L2Rldi9udWxsCmNfcmVoYXNoIC91c3IvbGliL3NzbC9jZXJ0cwoKZm9yIHNlcnZpY2UgaW4gYXJvLWRidG9rZW4gYXJvLW1vbml0b3IgYXJvLXBvcnRhbCBhcm8tcnAgYXVvbXMgYXpzZWNkIGF6c2VjbW9uZCBtZHNkIG1kbSBjaHJvbnlkIHRkLWFnZW50LWJpdDsgZG8KICBzeXN0ZW1jdGwgZW5hYmxlICRzZXJ2aWNlLnNlcnZpY2UKZG9uZQoKZm9yIHNjYW4gaW4gYmFzZWxpbmUgY2xhbWF2IHNvZnR3YXJlOyBkbwogIC91c3IvbG9jYWwvYmluL2F6c2VjZCBjb25maWcgLXMgJHNjYW4gLWQgUDFECmRvbmUKCihzbGVlcCAzMDsgcmVib290KSAmCg==')))]"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"overprovision": false
|
|
},
|
|
"identity": {
|
|
"type": "UserAssigned",
|
|
"userAssignedIdentities": {
|
|
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', concat('aro-rp-', resourceGroup().location))]": {}
|
|
}
|
|
},
|
|
"name": "[concat('rp-vmss-', parameters('vmssName'))]",
|
|
"type": "Microsoft.Compute/virtualMachineScaleSets",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2020-06-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Authorization/roleAssignments', guid(resourceGroup().id, parameters('rpServicePrincipalId'), 'RP / Reader'))]",
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-vnet')]",
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]",
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb-internal')]",
|
|
"[resourceId('Microsoft.Storage/storageAccounts', substring(parameters('storageAccountDomain'), 0, indexOf(parameters('storageAccountDomain'), '.')))]"
|
|
]
|
|
},
|
|
{
|
|
"sku": {
|
|
"name": "Standard_LRS"
|
|
},
|
|
"location": "[resourceGroup().location]",
|
|
"name": "[substring(parameters('storageAccountDomain'), 0, indexOf(parameters('storageAccountDomain'), '.'))]",
|
|
"type": "Microsoft.Storage/storageAccounts",
|
|
"apiVersion": "2019-04-01"
|
|
},
|
|
{
|
|
"properties": {
|
|
"severity": 2,
|
|
"enabled": true,
|
|
"scopes": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
],
|
|
"evaluationFrequency": "PT5M",
|
|
"windowSize": "PT15M",
|
|
"targetResourceType": "Microsoft.Network/loadBalancers",
|
|
"criteria": {
|
|
"allOf": [
|
|
{
|
|
"operator": "LessThan",
|
|
"threshold": 30,
|
|
"AdditionalProperties": null,
|
|
"name": "HealthProbeCheck",
|
|
"metricName": "DipAvailability",
|
|
"metricNamespace": "microsoft.network/loadBalancers",
|
|
"timeAggregation": "Average",
|
|
"criterionType": "StaticThresholdCriterion"
|
|
}
|
|
],
|
|
"AdditionalProperties": null,
|
|
"odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria"
|
|
},
|
|
"autoMitigate": true,
|
|
"actions": [
|
|
{
|
|
"actionGroupId": "[resourceId(parameters('subscriptionResourceGroupName'), 'Microsoft.Insights/actionGroups', 'rp-health-ag')]",
|
|
"webHookProperties": null
|
|
}
|
|
]
|
|
},
|
|
"name": "[concat('rp-availability-alert-', resourceGroup().location)]",
|
|
"type": "Microsoft.Insights/metricAlerts",
|
|
"location": "global",
|
|
"apiVersion": "2018-03-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"severity": 3,
|
|
"enabled": true,
|
|
"scopes": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
],
|
|
"evaluationFrequency": "PT15M",
|
|
"windowSize": "PT6H",
|
|
"targetResourceType": "Microsoft.Network/loadBalancers",
|
|
"criteria": {
|
|
"allOf": [
|
|
{
|
|
"operator": "LessThan",
|
|
"threshold": 67,
|
|
"AdditionalProperties": null,
|
|
"name": "HealthProbeCheck",
|
|
"metricName": "DipAvailability",
|
|
"metricNamespace": "microsoft.network/loadBalancers",
|
|
"timeAggregation": "Average",
|
|
"criterionType": "StaticThresholdCriterion"
|
|
}
|
|
],
|
|
"AdditionalProperties": null,
|
|
"odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria"
|
|
},
|
|
"autoMitigate": true,
|
|
"actions": [
|
|
{
|
|
"actionGroupId": "[resourceId(parameters('subscriptionResourceGroupName'), 'Microsoft.Insights/actionGroups', 'rp-health-ag')]",
|
|
"webHookProperties": null
|
|
}
|
|
]
|
|
},
|
|
"name": "[concat('rp-degraded-alert-', resourceGroup().location)]",
|
|
"type": "Microsoft.Insights/metricAlerts",
|
|
"location": "global",
|
|
"apiVersion": "2018-03-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"severity": 2,
|
|
"enabled": true,
|
|
"scopes": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
],
|
|
"evaluationFrequency": "PT5M",
|
|
"windowSize": "PT5M",
|
|
"targetResourceType": "Microsoft.Network/loadBalancers",
|
|
"criteria": {
|
|
"allOf": [
|
|
{
|
|
"operator": "LessThan",
|
|
"threshold": 33,
|
|
"AdditionalProperties": null,
|
|
"name": "HealthProbeCheck",
|
|
"metricName": "VipAvailability",
|
|
"metricNamespace": "microsoft.network/loadBalancers",
|
|
"timeAggregation": "Average",
|
|
"criterionType": "StaticThresholdCriterion"
|
|
}
|
|
],
|
|
"AdditionalProperties": null,
|
|
"odata.type": "Microsoft.Azure.Monitor.SingleResourceMultipleMetricCriteria"
|
|
},
|
|
"autoMitigate": true,
|
|
"actions": [
|
|
{
|
|
"actionGroupId": "[resourceId(parameters('subscriptionResourceGroupName'), 'Microsoft.Insights/actionGroups', 'rp-health-ag')]",
|
|
"webHookProperties": null
|
|
}
|
|
]
|
|
},
|
|
"name": "[concat('rp-vnet-alert-', resourceGroup().location)]",
|
|
"type": "Microsoft.Insights/metricAlerts",
|
|
"location": "global",
|
|
"apiVersion": "2018-03-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/loadBalancers', 'rp-lb')]"
|
|
]
|
|
},
|
|
{
|
|
"name": "[concat(parameters('databaseAccountName'), '/Microsoft.Authorization/', guid(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName')), parameters('billingServicePrincipalId') , 'Billing / DocumentDB Account Contributor'))]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/providers/roleAssignments",
|
|
"properties": {
|
|
"scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]",
|
|
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5bd9cd88-fe45-4216-938b-f97437e15450')]",
|
|
"principalId": "[parameters('billingServicePrincipalId')]",
|
|
"principalType": "ServicePrincipal"
|
|
},
|
|
"condition": "[greater(length(parameters('billingServicePrincipalId')), 0)]",
|
|
"apiVersion": "2018-09-01-preview",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {},
|
|
"name": "[concat(resourceGroup().location, '.', parameters('clusterParentDomainName'))]",
|
|
"type": "Microsoft.Network/dnsZones",
|
|
"location": "global",
|
|
"apiVersion": "2018-05-01"
|
|
},
|
|
{
|
|
"properties": {
|
|
"addressSpace": {
|
|
"addressPrefixes": [
|
|
"10.0.0.0/24"
|
|
]
|
|
},
|
|
"subnets": [
|
|
{
|
|
"properties": {
|
|
"addressPrefix": "10.0.0.0/24",
|
|
"networkSecurityGroup": {
|
|
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', 'rp-nsg')]",
|
|
"tags": null
|
|
},
|
|
"serviceEndpoints": [
|
|
{
|
|
"service": "Microsoft.KeyVault",
|
|
"locations": [
|
|
"*"
|
|
]
|
|
},
|
|
{
|
|
"service": "Microsoft.AzureCosmosDB",
|
|
"locations": [
|
|
"*"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"name": "rp-subnet"
|
|
}
|
|
]
|
|
},
|
|
"name": "rp-vnet",
|
|
"type": "Microsoft.Network/virtualNetworks",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01"
|
|
},
|
|
{
|
|
"properties": {
|
|
"addressSpace": {
|
|
"addressPrefixes": [
|
|
"10.0.4.0/22"
|
|
]
|
|
},
|
|
"subnets": [
|
|
{
|
|
"properties": {
|
|
"addressPrefix": "10.0.4.0/22",
|
|
"networkSecurityGroup": {
|
|
"id": "[resourceId('Microsoft.Network/networkSecurityGroups', 'rp-pe-nsg')]",
|
|
"tags": null
|
|
},
|
|
"privateEndpointNetworkPolicies": "Disabled"
|
|
},
|
|
"name": "rp-pe-subnet"
|
|
}
|
|
]
|
|
},
|
|
"name": "rp-pe-vnet-001",
|
|
"type": "Microsoft.Network/virtualNetworks",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-07-01"
|
|
},
|
|
{
|
|
"properties": {
|
|
"allowVirtualNetworkAccess": true,
|
|
"allowForwardedTraffic": true,
|
|
"allowGatewayTransit": false,
|
|
"useRemoteGateways": false,
|
|
"remoteVirtualNetwork": {
|
|
"id": "[resourceId('Microsoft.Network/virtualNetworks', 'rp-pe-vnet-001')]"
|
|
}
|
|
},
|
|
"name": "rp-vnet/peering-rp-pe-vnet-001",
|
|
"type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
|
|
"apiVersion": "2019-07-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-vnet')]",
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-pe-vnet-001')]"
|
|
],
|
|
"location": "[resourceGroup().location]"
|
|
},
|
|
{
|
|
"properties": {
|
|
"allowVirtualNetworkAccess": true,
|
|
"allowForwardedTraffic": true,
|
|
"allowGatewayTransit": false,
|
|
"useRemoteGateways": false,
|
|
"remoteVirtualNetwork": {
|
|
"id": "[resourceId('Microsoft.Network/virtualNetworks', 'rp-vnet')]"
|
|
}
|
|
},
|
|
"name": "rp-pe-vnet-001/peering-rp-vnet",
|
|
"type": "Microsoft.Network/virtualNetworks/virtualNetworkPeerings",
|
|
"apiVersion": "2019-07-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-pe-vnet-001')]",
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-vnet')]"
|
|
],
|
|
"location": "[resourceGroup().location]"
|
|
},
|
|
{
|
|
"kind": "GlobalDocumentDB",
|
|
"properties": {
|
|
"consistencyPolicy": {
|
|
"defaultConsistencyLevel": "Strong"
|
|
},
|
|
"locations": [
|
|
{
|
|
"locationName": "[resourceGroup().location]"
|
|
}
|
|
],
|
|
"databaseAccountOfferType": "Standard",
|
|
"ipRangeFilter": "[if(parameters('disableCosmosDBFirewall'), '', concat('104.42.195.92,40.76.54.131,52.176.6.30,52.169.50.45,52.187.184.26', if(equals(parameters('extraCosmosDBIPs'), ''), '', ','), parameters('extraCosmosDBIPs')))]",
|
|
"isVirtualNetworkFilterEnabled": "[not(parameters('disableCosmosDBFirewall'))]",
|
|
"virtualNetworkRules": "[if(parameters('disableCosmosDBFirewall'), createArray(), createArray(createObject('id', resourceId('Microsoft.Network/virtualNetworks/subnets', 'rp-vnet', 'rp-subnet'))))]",
|
|
"disableKeyBasedMetadataWriteAccess": true
|
|
},
|
|
"name": "[parameters('databaseAccountName')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts",
|
|
"location": "[resourceGroup().location]",
|
|
"tags": {
|
|
"defaultExperience": "Core (SQL)"
|
|
},
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/virtualNetworks', 'rp-vnet')]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "['ARO']"
|
|
},
|
|
"options": {
|
|
"throughput": "500"
|
|
}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "AsyncOperations",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/id"
|
|
],
|
|
"kind": "Hash"
|
|
},
|
|
"defaultTtl": 604800
|
|
},
|
|
"options": {}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/AsyncOperations')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "Billing",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/id"
|
|
],
|
|
"kind": "Hash"
|
|
}
|
|
},
|
|
"options": {}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/Billing')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "Monitors",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/id"
|
|
],
|
|
"kind": "Hash"
|
|
},
|
|
"defaultTtl": -1
|
|
},
|
|
"options": {}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/Monitors')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "OpenShiftClusters",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/partitionKey"
|
|
],
|
|
"kind": "Hash"
|
|
},
|
|
"uniqueKeyPolicy": {
|
|
"uniqueKeys": [
|
|
{
|
|
"paths": [
|
|
"/key"
|
|
]
|
|
},
|
|
{
|
|
"paths": [
|
|
"/clusterResourceGroupIdKey"
|
|
]
|
|
},
|
|
{
|
|
"paths": [
|
|
"/clientIdKey"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"options": {}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/OpenShiftClusters')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "Portal",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/id"
|
|
],
|
|
"kind": "Hash"
|
|
},
|
|
"defaultTtl": -1
|
|
},
|
|
"options": {
|
|
"throughput": "400"
|
|
}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/Portal')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"properties": {
|
|
"resource": {
|
|
"id": "Subscriptions",
|
|
"partitionKey": {
|
|
"paths": [
|
|
"/id"
|
|
],
|
|
"kind": "Hash"
|
|
}
|
|
},
|
|
"options": {}
|
|
},
|
|
"name": "[concat(parameters('databaseAccountName'), '/', 'ARO', '/Subscriptions')]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
|
|
"location": "[resourceGroup().location]",
|
|
"apiVersion": "2019-08-01",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', parameters('databaseAccountName'), 'ARO')]",
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"name": "[guid(resourceGroup().id, parameters('rpServicePrincipalId'), 'RP / Reader')]",
|
|
"type": "Microsoft.Authorization/roleAssignments",
|
|
"properties": {
|
|
"scope": "[resourceGroup().id]",
|
|
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
|
|
"principalId": "[parameters('rpServicePrincipalId')]",
|
|
"principalType": "ServicePrincipal"
|
|
},
|
|
"apiVersion": "2018-09-01-preview"
|
|
},
|
|
{
|
|
"name": "[guid(resourceGroup().id, 'FP / Network Contributor')]",
|
|
"type": "Microsoft.Authorization/roleAssignments",
|
|
"properties": {
|
|
"scope": "[resourceGroup().id]",
|
|
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '4d97b98b-1d4f-4787-a291-c67834d212e7')]",
|
|
"principalId": "[parameters('fpServicePrincipalId')]",
|
|
"principalType": "ServicePrincipal"
|
|
},
|
|
"apiVersion": "2018-09-01-preview"
|
|
},
|
|
{
|
|
"name": "[concat(parameters('databaseAccountName'), '/Microsoft.Authorization/', guid(resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName')), parameters('rpServicePrincipalId'), 'RP / DocumentDB Account Contributor'))]",
|
|
"type": "Microsoft.DocumentDB/databaseAccounts/providers/roleAssignments",
|
|
"properties": {
|
|
"scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]",
|
|
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5bd9cd88-fe45-4216-938b-f97437e15450')]",
|
|
"principalId": "[parameters('rpServicePrincipalId')]",
|
|
"principalType": "ServicePrincipal"
|
|
},
|
|
"apiVersion": "2018-09-01-preview",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('databaseAccountName'))]"
|
|
]
|
|
},
|
|
{
|
|
"name": "[concat(resourceGroup().location, '.', parameters('clusterParentDomainName'), '/Microsoft.Authorization/', guid(resourceId('Microsoft.Network/dnsZones', concat(resourceGroup().location, '.', parameters('clusterParentDomainName'))), 'FP / DNS Zone Contributor'))]",
|
|
"type": "Microsoft.Network/dnsZones/providers/roleAssignments",
|
|
"properties": {
|
|
"scope": "[resourceId('Microsoft.Network/dnsZones', concat(resourceGroup().location, '.', parameters('clusterParentDomainName')))]",
|
|
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'befefa01-2a29-4197-83a8-272ff33ce314')]",
|
|
"principalId": "[parameters('fpServicePrincipalId')]",
|
|
"principalType": "ServicePrincipal"
|
|
},
|
|
"apiVersion": "2018-09-01-preview",
|
|
"dependsOn": [
|
|
"[resourceId('Microsoft.Network/dnsZones', concat(resourceGroup().location, '.', parameters('clusterParentDomainName')))]"
|
|
]
|
|
}
|
|
]
|
|
}
|